Forum und email

Operatori

Indice dei contenuti

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.

Precedenza degli operatori
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 
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
?>
Utilizzare le parentesi per aumentare la leggibilità del codice.

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.