- 01. Configurare PSPad
- 02. Hello World!
- 03. Lessico
- 04. Spazi e commenti
- 05. Variabili
- 06. Tipi di dato
- 07. Costanti
- 08. Array
- 09. Array multidimensionali
- 10. Stringhe
- 11. Operatori
- 12. Strutture di controllo
- 13. Funzioni
- 14. Librerie e file esterni
- 15. Oggetti
- 16. Gli Oggetti e i Membri statici
- 17. Oggetti e Costanti
- 18. Gli Oggetti e l'Ereditarietà
11. Operatori
Gli operatori sono usati principalmente per costruire espressioni.
Solitamente, essi vengono posizionati fra due valori per produrne un terzo, creando così un'espressione.
PHP ci mette a disposizione tre tipi di operatori :
- Unari - Richiedono un solo valore (es. $i++)
- Binari - Richiedono due valori (es. $x $y)
- Terzari - Esiste un solo operatore ternario e richiede tre valori (es. $x = ($y == 0) ? 5 : 10)
Vediamo ora la tabella degli operatori ordinati per precedenza in ordine decrescente :
Posizione | Operatore | Ambito | Descrizione |
new | new | Istanzia un nuovo oggetto | |
Destra | [ ] | Array | Array subscript |
Destra | ! | Operatore Logico | NOT Logico |
Destra | ~ | Operatore sui bit | NOT sui bit |
Destra | ++ | Incremento \ decremento | Operatore di incremento |
Destra | -- | Incremento \ decremento | Operatore di decremento |
Destra | (int), (double), (string), (array), (object) | Tipi | Operatori di Casting |
Destra | @ | Errori | Inibisce gli errori |
Sinistra | * | Operatore aritmetico | Moltiplicazione |
Sinistra | / | Operatore aritmetico | Divisione |
Sinistra | % | Operatore aritmetico | Modulo (resto divisione ecc...) |
Sinistra | + | Operatore aritmetico | Addizione |
Sinistra | - | Operatore aritmetico | Sottrazione |
Sinistra | . | Operatore su stringa | Concatenazione stringhe |
Sinistra | << ; >> | Operatori sui bit | Scorrimento bit a sinistra e destra |
< ; <= | Operatori di confronto | Minore ; Minore uguale | |
> ; >= | Operatori di confronto | Maggiore ; Maggiore uguale | |
== ; === | Operatori di confronto | Uguaglianza nel valore ; Uguaglianza nel tipo e nel valore |
|
!= ; <> ; !== | Operatori di confronto | Disuguaglianza ; Disuguaglianza ; Disuguaglianza nel tipo e nel valore |
|
Sinistra | & | Operatore sui bit | AND sui bit o passaggio parametri/variabili per riferimento (es. $x = &$y) |
Sinistra | ^ | Operatori sui bit | XOR sui bit |
Sinistra | | | Operatore sui bit | OR sui bit |
Sinistra | && ; || | Operatori Logici | AND Logico ; OR Logico |
Sinistra | ?: | Operatore Ternario | Operatore condizionale |
Sinistra | = | Operatore d'assegnazione | Operatore d'assegnazione |
Sinistra | += ; -= ; *= ; /= ; %= ; &= ; |= ; ^= ; ~= ; <<= ; >>= | Operatori d'assegnazione | Operatori d'assegnazione con operazione |
Sinistra | .= | Operatore su stringa | Assegnazione con concatenazione stringa |
Sinistra | and ; xor ; or | Operatori Logici | AND Logico ; XOR Logico ; OR Logico |
Sinistra | , | Diversi usi | Separatore liste |
Vediamo ora un esempio sulla precedenza degli operatori, per capire anche come sfruttare al meglio questa tabella.
L'esempio consiste in una semplice espressione, con una addizione e una moltiplicazione. L'operatore *, come potete vedere
nella tabella, precede l'operatore +, di conseguenza ha la precedenza nella seguente espressione :
echo 1 + 5 * 2; // stampa : 11 e non 12 echo (1 + 5) * 2; // stampa : 12
Di seguito altri esempi commentati sulla precedenza degli operatori :
$x = 5; $y = 10; echo $x > $y ? 2 * 4 : 10 / 2; // stampa : 5 echo $x < $y ? 2 * 4 : 10 / 2; // stampa : 8
Riporto altri esempi sull'utilizzo di vari operatori :
$x = $a + $b; // somma $a e $b e memorizza il valore in $x $x = 5; echo $x *= 14 % 6; // stampa : 10 (14 diviso 6 da 2 di resto, moltiplica 2 ad $x e lo memorizza in quest'ultima echo $x++; // stampa : 10 (stampa la $x e poi la incrementa) echo $x; // stampa : 11 echo ++$x; // stampa : 12 (prima incrementa $x e poi la stampa) echo $x; // stampa : 12 $stringa = "Roma"; $stringa .= " Caput Mundi"; // $stringa diventa : "Roma Caput Mundi"
Vediamo ora a cosa serve l'operatore Ternario ?: e come si usa.
Questo operatore ci consente di valutare una espressione (condizione), e in caso venga soddisfatta viene eseguita una determinata
operazione, altrimenti viene eseguita l'operazione alternativa.
Bisogna specificare prima la condizione seguita dal punto interrogativo ?, poi la prima operazione che sarà eseguita nel caso in cui la condizione viene soddisfatta, a seguire i due punti :, e infine la seconda operazione che verrà eseguita se la condizione NON viene soddisfatta.
$stringa = "At vero eos et accusam et justo duo dolores et ea rebum."; $messaggio = strlen($stringa) >= 100 ? "Stringa di 100 caratteri o più!" : "Stringa con meno di 100 caratteri!"; echo $messaggio; // stampa : "Stringa con meno di 100 caratteri!"
Parliamo ora del Casting.
Il casting è un operazione il cui scopo è quello di convertire il tipo di un dato in un altro tipo.
E' possibile effettuare due tipi di casting : uno implicito impostato automaticamente da PHP, ed uno esplicito impostato da noi tramite gli operatori di casting. Vediamone due esempi.
echo "44 gatti " + 1; // stampa : 45 - Casting implicito echo "44 gatti " . 1; // stampa : "44 gatti 1" - Casting implicito echo 1.28 + 2; // stampa : 3.28 - Nessun casting echo (int) 1.28 + 2; // stampa : 3 - Casting esplicito
Nella prima echo possiamo osservare un casting di tipo implicito, infatti PHP esegue un casting (int) sulla stringa "44 gatti" perchè viene seguita dall'operatore aritmetico +. Nella seconda echo abbiamo ancora un casting di tipo implicito, ma stavolta del tipo (string) sul valore 1, perchè viene usato l'operatore di concatenazione stringhe. Nella terza echo non viene effettuato nessun casting, ma serve a rendere più chiaro il casting esplicito della quarta echo, dove tramite l'operatore di casting (int), viene detto a PHP di considerare il numero come intero, e non come numero a virgola mobile. Prima di chiudere il capitolo, rivediamo gli Operatori sui bit. |
Questi operatori sono particolari perchè convertono prima gli operandi dell'espressione nella loro rappresentazione binaria.
Ecco un esempio di come lavora l'operatore logico sui bit & :
// Operatore sui bit & 111101101 & 110111001 ------------- 110101001
In questo caso quindi, per ogni binario viene effettuata la AND che fallisce quando i bit non sono entrambi 1.
Per capire meglio l'aritmetica binaria, potete usare le funzioni bindec() e decbin(), per riconvertire i numeri da binario a decimale e viceversa, e vi consiglio anche di dare un'occhiata al capitolo "Operatori bitwise" della Documentazione Ufficiale di PHP.net costantemente aggiornata.