Manuale PHP
Indietro |  | Avanti

# Capitolo 15. Operatori

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.

Tabella 15-1. 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.

Esempio 15-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 ?>`

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.

Indietro | Partenza | Avanti
Expressions | Risali | Operatori aritmetici