Operatori
PHP Manual

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.

Quando gli operatori hanno precedenza identica, la loro associatività decide se sono valutati partendo da destra o da sinistra - vedere gli esempi qui sotto.

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.

Precedenza degli operatori
Associatività Operatori Informazioni aggiuntive
non associativi clone new clone e new
sinistra [ array()
destra ++ -- ~ (int) (float) (string) (array) (object) (bool) @ types and increment/decrement
non associativi instanceof tipi
destra ! operatori logici
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

Per operatori con uguale precedenza, l'associazione a sinistra indica che l'espressione viene valutata da sinistra verso destra, e l'associazione destra indica il contrario.

Example #1 Associatività

<?php
$a 
5// (3 * 3) % 5 = 4
$a true true 2// (true ? 0 : true) ? 1 : 2 = 2

$a 1;
$b 2;
$a $b += 3// $a = ($b += 3) -> $a = 5, $b = 5

// mescolare  ++ e + produce un comportamento indefinito
$a 1;
echo ++
$a $a++; // può stampare 4 o 5
?>
Utilizzare le parentesi, anche quando non è strettamente necessarion, pùò spesso aumentare la leggibilità del codice.

Nota:

Sebbene = abbia una precedenza minore rispetto alla maggior parte degli altri operatori, PHP permette comunque espressioni simili alla seguente: if (!$a = foo()), in questo caso l'output di foo() viene inserito in $a.


Operatori
PHP Manual