Operatori
Indice dei contenuti
- Operatori aritmetici
- Operatori di assegnazione
- Operatori bitwise
- Operatori di confronto
- Operatori di controllo errori
- Operatori di esecuzione
- Operatori di incremento/decremento
- Operatori logici
- Operatori di stringa
- Operatori per matrici
- Operatori di tipi
Un operatore è un qualcosa che si posiziona tra uno o più valori (od espressioni, in gergo tecnico) e produce un'altro valore (in modo tale che la costruzione stessa diventi a sua volta un'espressione). In questo modo si può considerare operatori le funzioni o costruzioni che restituiscono valori (tipo print), e quelle che non restituiscono nulla (come echo) possono essere considerate come altro tipo di funzione.
Esistono tre tipi di operatori. Una tipologia sono gli operatori unari, i quali richiedono un solo valore, ad esempio ! (l'operatore di negazione) oppure ++ (l'operatore di autoincremento). Nel secondo gruppo troviamo gli operatori binari; questi costituiscono la maggior parte degli operatori disponibili in PHP, un e elenco di questi è presente alla sezione Precednza degli operatori.
Il terzo gruppo è costituito dal operatore ternario: ?:. Questo si può utilizzare per selezionare un espressione tra due possibili, in base ad una terza; piuttosto che dovere scegliere tra due righe di istruzioni o diversi percorsi di esecuzione. Racchiudere l'operatore ternario tra parentesi tonde è una buona idea.
Precedenza degli operatori
La precedenza di un operatore specifica come esso tenga legate assieme "strettamente" due espressioni. Per esempio, nell'espressione 1 + 5 * 3, la risposta è 16 e non 18 perché l'operatore di moltiplicazione ("*") ha una precedenza più alta rispetto all'operatore di addizione ("+"). Le parentesi possono essere usate per forzare la precedenza, se necessario. Per esempio: (1 + 5) * 3 viene valutata 18. Se la precedenza tra gli operatori è simile, si utilizza l'associazione da sinistra a destra.
La seguente tabella fornisce una lista della precedenza degli operatori con gli operatori a più alta precedenza elencati prima. Gli operatori presenti nella medesima linea hanno uguale precedenza, in questi casi la loro associativià decide l'ordine con cui sono valutati.
Associatività | Operatori | Informazioni aggiuntive |
---|---|---|
non associativi | new | new |
destra | [ | array() |
destra | ! ~ ++ -- (int) (float) (string) (array) (object) @ | incremento/decremento |
destra | ! ~ + - (int) (float) (string) (array) (object) @ | tipi |
sinistra | * / % | operatori aritmetici |
sinistra | + - . | operatori aritmetici e operatori su stringhe |
sinistra | << >> | operatori sui bit |
non associativi | < <= > >= | operatori di confronto |
non associativi | == != === !== | operatori di confronto |
sinistra | & | operatori sui bit e riferimenti |
sinistra | ^ | operatori sui bit |
sinistra | | | operatori sui bit |
sinistra | && | operatori logici |
sinistra | || | operatori logici |
sinistra | ? : | Operatore ternario |
sinistra | = += -= *= /= .= %= &= |= ^= ~= <<= >>= | operatori di assegnazione |
sinistra | and | operatori logici |
sinistra | xor | operatori logici |
sinistra | or | operatori logici |
sinistra | , | diversi usi |
L'associazione a sinistra indica che l'espressione viene valutata da sinistra verso destra, l'associazione destra indica il contrario.
Example#1 AssociativitÃ
<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>
Nota: Sebbene ! abbia una maggiore pecedenza rispetto a =, il PHP cintinua a permetter espressioni tipo la seguente: if (!$a = foo()), in questo caso l'output di foo() viene inserito in $a.