Corso PHP: 5 – 6. Costanti e Operatori

5. Costanti

Le costanti sono utilizzate per memorizzare valori, parimenti alle variabili, ma a differenza di queste ultime, come dice il nome, il valore non sarà modificabile.

Anche dal punto di vista sintattico ci sono delle differenze:

  • il nome delle costanti non è preceduto dal segno $;
  • il nome delle costanti è normalmente scritto in lettere maiuscole (anche se non è obbligatorio)
  • una costante si definisce col costrutto define (‘NOME’, valore)

L’uso delle costanti e delle variabili sarà esaminato in dettaglio quando avremo affontato anche i costrutti sintattici del linguaggio.

6.    Operatori

Sono moltissimi gli operatori utilizzati nelle espressioni in PHP. Per chiarezza di esposizione li raggrupperemo in categorie.

6.1   Operatori aritmetici

Operat.

Esempio

Nome

Significato

-$a Negazione Opposto di $a.

+

$a + $b Somma Somma of $a e $b.

$a – $b Sottrazione Differenza tra $a e $b.

*

$a * $b Moltiplicazione Prodotto of $a and $b.

/

$a / $b Divisione Quoziente tra $a e $b.

%

$a % $b Modulo Resto di $a diviso per $b.

+=

$a+=$b Addizione Stesso di $a = $a + $b

L’unica cosa che vale la pena di sottolineare è l’ultimo operatore += che è particolare rispetto ai classici operatori aritmetici dei vari linguaggi di programmazione. E’ un misto di un operatore di assegnazione (=) descritto sotto ed un operatore aritmetico (+).
Va poi sottolineato che lo stesso costrutto non vale solo per la somma, ma è applicabile per tutte e quattro le operazioni aritmetiche, per cui, per esempio, $a /= $b è come scrivere $a = $a / $b.

6.2      Operatori logici

Operat.

Esempio

Nome

Significato

and

$a and $b AND VERO se sia $a sia $b sono VERI

or

$a or $b OR VERO se almeno uno tra $a e $b è VERO

xor

$a xor $b XOR VERO se uno tra $a e $b è VERO, ma non entrambi

!

! $a NOT Il risultato è VERO se $a è FALSO

&&

$a && $b AND VERO se sia $a sia $b sono VERI (come AND)

||

$a || $b OR VERO se almeno uno tra $a e $b è VERO (come OR)

Come si evince dalla tabella AND e OR possono essere espressi sia con le due parole AND e OR sia con && e ||.

Le regole sono quelle dell’algebra booleana e quindi non c’è altro da aggiungere.

6.3      Operatori di confronto

 

Operat.

Esempio

Nome

Significato

==

$a == $b Uguale VERO se $a = $b indipendentemente dal loro tipo

===

$a === $b Identico VERO se $a = $b e sono dello stesso tipo

!=

$a != $b Diverso VERO se $a ≠ $b indipendentemente dal loro tipo

<> 

$a <> $b Diverso VERO se $a ≠ $b indipendentemente dal loro tipo

!==

$a !== $b Non identico VERO se $a ≠ $b oppure sono di tipo diverso

$a < $b Minore VERO se $a < $b

$a > $b Maggiore VERO se $a > $b

<=

$a <= $b Minore o uguale VERO se $a ≤ $b

>=

$a >= $b Maggiore o uguale VERO se $a ≥ $b

La differenza tra uguale e identico sta nel tipo di dato di ciò che si confronta. Il PHP è molto elastico nel trattare i tipi di dati e, durante la manipolazione di variabili, non dovrete preoccuparvi troppo del tipo dei dati. Per esempio se $a contiene la stringa “01” e $b il valore numerico 1 Il confronto $a == $b darebbe esito VERO  mentre $a === $b darebbe esito FALSO.

6.4      Operatore di assegnazione

Operat.

Esempio

Nome

Significato

=

$a = $b Assegna il valore di $b a $a

Con il simbolo = si assegna un valore ad una variabile.
Ricordiamo i già menzionati operatori combinati di assegnazione e di operazione aritmetica
$a += $b ed analogamente per le altre operazioni aritmetiche.

Infine diciamo che l’assegnazione può anche essere multipla. Per esempio $a = $b = 10 significa che si assegna il valore 10 ad entrambe le variabili $a e $b.

6.5      Operatori di incremento / decremento

Operat.

Esempio

Nome

Significato

++

++$a Pre-incremento Incrementa $a di 1 e poi ritorna $a

++

$a++ Post-incremento Ritorna $a e poi la incrementa di 1

–$a Pre-decremento Decrementa $a di 1 e poi ritorna $a

$a– Post-decremento Ritorna $a e poi la decrementa di 1

La differenza tra le due forme può non essere evidente, quindi la cosa migliore è spiegarla con un esempio.
Consideriamo la seguente coppia di istruzioni:

$a = 5;
$b = ++$a;

In questo caso, siccome $a viene prima incrementata e poi restituito il suo valore, si avrà come risultato $a = 6 e $b = 6

Consideriamo adesso la seguente coppia di istruzioni:

$a = 5;
$b = $a++;

In questo caso $a restituisce il suo valore prima di essere incrementata, per cui il risultato sarà:
$a = 6 e $b = 5

6.6      Operatori di manipolazione dei bit

Operat.

Esempio

Nome

Significato

&

$a & $b AND Mette a 1 i bit che sono 1 sia in $a sia in $b

|

$a | $b OR Mette a 1 i bit che sono 1 in $a oppure in $b

^

$a ^ $b XOR Mette a 1 i bit che sono 1 in $a o in $b, ma non entrambi

~

~ $a NOT Sono messi a 1 i bits che sono a 0 in $a e viceversa (~ = Alt + 126)

<< 

$a << $b Shift left Sposta i bits di $a a sinistra di $b posizioni

>> 

$a >> $b Shift right Sposta i bits di $a a destra di $b posizioni

Per spiegare il significato di queste operazioni guardiamo la tabella che segue:

64

32

16

8

4

2

1

Valore

Espressione

0

1

1

1

0

0

1

57

$a

0

0

1

0

1

1

1

23

$b

0

0

1

0

0

0

1

17

$a & $b

0

1

1

1

1

1

1

63

$a | $b

0

1

0

1

1

1

0

47

$a ^ $b

1

0

0

0

1

1

0

70

~$a

1

1

1

0

0

1

0

114

$a << 1

0

0

0

1

1

1

0

14

$a >> 2

Poniamo $a = 57 e $b = 23. I loro valori espressi in binario sono mostrati nelle due prime righe della tabella.
Nelle successive righe sono mostrati i valori che assumono le diverse espressioni. Ad esempio l’espressione $a & &b avrà ad 1 i bit 24 (16) e 20 (1) perché questi sono gli unici due bits impostati ad 1 in entrambe le variabili $a e $b.
Per quanto riguarda Shift left e Shift right va notato che spostando a sinistra nelle ultime posizioni a destra che vanno inserite (nel nostro esempio solo una perché spostiamo di una posizione) andranno inseriti tutti 0; analogamente per lo spostamento verso destra.

6.7      Operatore di concatenamento

Operat.

Esempio

Nome

Significato

.

$a.$b Concatenamento Unisce $a e $b in un’unica stringa

Esempio:

$a = “miodominio”;
$b= “.com”;
$c = $a . $b;

Il risultato sarà: $c = “miodominio.com”.

La stessa cosa può essere ottenuta con l’operatore .= ed il seguente costrutto:

$a = “miodominio”;
$a .= “.com”;

Il risultato sarà: $a = “miodominio.com”.

6.8      Operatore di controllo degli errori

Operat.

Esempio

Nome

Significato

@

If ($a == ‘1’); Se anteposto ad un’espressione sopprime eventuali messaggi di errore

Nell’esempio riportato nella tabella qui sopra se $a non fosse definita, non verrebbe generato alcun messaggio di errore.

 

6.9      Operatore condizionale

Operat.

Esempio

Nome

Significato

? :

$a = $expr ? 1 : 0 Se è vera $expr $a assume valore 1, altrimenti 0

Può anche essere usata nella forma seguente:

$a += $expr ? 1 : 0;

che significa: se $expr è vera viene sommato 1 a $a, altrimenti viene sommato 0.

Oppure anche:

$a .= ($b==”png”) ? “png” : “jpg”;

che significa: se $b è uguale a “png” a $a verrà accodato il valore “png”, altrimenti “jpg”.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.