W3docs

Operatori PHP

Scopri tutti i tipi di operatori PHP — aritmetici, di confronto, logici, stringa, array, spaceship e null-coalescing — con esempi e regole di precedenza.

Un operatore prende uno o più valori (chiamati operandi) e produce un nuovo valore da essi. Gli operatori sono i mattoni fondamentali di ogni espressione che scrivi in PHP — ti permettono di fare aritmetica, confrontare valori, combinare condizioni booleane, assegnare risultati alle variabili e unire stringhe.

Questo capitolo copre ogni categoria di operatori PHP con esempi eseguibili: aritmetici, di assegnazione, di confronto, logici, di incremento/decremento, di stringa, di array, l'operatore spaceship, l'operatore null-coalescing e come la precedenza degli operatori decide l'ordine di valutazione.

Operatori Aritmetici

Gli operatori aritmetici eseguono le familiari operazioni matematiche sui numeri.

OperatoreNomeEsempioRisultato
+Addizione10 + 515
-Sottrazione10 - 55
*Moltiplicazione10 * 550
/Divisione10 / 42.5
%Modulo (resto)10 % 31
**Esponenziazione2 ** 416
<?php
$x = 10;
$y = 3;

echo $x + $y;   // 13
echo $x - $y;   // 7
echo $x * $y;   // 30
echo $x / $y;   // 3.3333333333333
echo $x % $y;   // 1   (remainder of 10 / 3)
echo $x ** $y;  // 1000 (10 to the power of 3)

Nota: A differenza di molti linguaggi, il / di PHP non tronca. 10 / 4 è 2.5, non 2. Usa intdiv() per la divisione intera. L'operatore % funziona sugli interi; per i resti in virgola mobile usa fmod().

Operatori di Assegnazione

L'operatore di assegnazione di base è = — memorizza il valore a destra nella variabile a sinistra. Ogni operatore aritmetico ha anche una forma combinata (composta) che aggiorna una variabile in-place.

OperatoreEquivalente a
$a += $b$a = $a + $b
$a -= $b$a = $a - $b
$a *= $b$a = $a * $b
$a /= $b$a = $a / $b
$a %= $b$a = $a % $b
$a .= $b$a = $a . $b (string append)
<?php
$total = 100;
$total += 20;  // 120
$total -= 50;  // 70
$total *= 2;   // 140
echo $total;   // 140

Operatori di Confronto

Gli operatori di confronto confrontano due valori e restituiscono un boolean (true o false). Nota la distinzione importante tra confronto lasco (==) e stretto (===).

OperatoreNometrue quando...
==Ugualei valori sono uguali dopo il type juggling
===Identicoi valori e i tipi sono uguali
!= / <>Diversoi valori non sono uguali
!==Non identicoi valori o i tipi differiscono
<Minore diil valore a sinistra è più piccolo
>Maggiore diil valore a sinistra è più grande
<=Minore o uguale
>=Maggiore o uguale
<?php
var_dump(10 == "10");   // bool(true)  — values match after juggling
var_dump(10 === "10");  // bool(false) — int vs string, types differ
var_dump(5 != 8);       // bool(true)
var_dump(5 >= 5);       // bool(true)

Attenzione: Preferisci === quando ti importa dei tipi. 0 == "abc" è false nelle versioni moderne di PHP (8.0+), ma il confronto lasco ha ancora casi limite sorprendenti — il confronto stretto li evita.

L'operatore spaceship <=>

L'operatore spaceship confronta due valori e restituisce -1, 0 o 1. È più utile come valore di ritorno di una callback di ordinamento.

<?php
echo 1 <=> 2;   // -1  (left is smaller)
echo 2 <=> 2;   //  0  (equal)
echo 3 <=> 2;   //  1  (left is larger)

Operatori Logici

Gli operatori logici combinano espressioni booleane, tipicamente all'interno di condizioni if.

OperatoreNometrue quando...
&& / andAndentrambi i lati sono veri
|| / orOralmeno un lato è vero
!Notl'operando è falso
xorOr esclusivoesattamente un lato è vero
<?php
$age = 25;
$hasLicense = true;

var_dump($age >= 18 && $hasLicense);  // bool(true)
var_dump($age < 18 || $hasLicense);   // bool(true)
var_dump(!$hasLicense);               // bool(false)

&& e and si comportano allo stesso modo nelle condizioni ma hanno una precedenza diversaand/or si legano più debolmente di =, il che può sorprendere. Usa sempre && e ||.

PHP esegue anche il corto-circuito: in $a && expensive(), se $a è false il lato destro non viene mai valutato.

Operatori di Incremento e Decremento

Questi operatori aggiungono o sottraggono 1 da una variabile. La loro posizione (pre vs post) cambia ciò che l'espressione valuta.

OperatoreEffetto
++$xPre-incremento: incrementa, poi restituisce il nuovo valore
$x++Post-incremento: restituisce il vecchio valore, poi incrementa
--$xPre-decremento
$x--Post-decremento
<?php
$x = 5;
echo $x++;  // 5  (prints old value, then $x becomes 6)
echo $x;    // 6
echo ++$x;  // 7  (increments first, then prints)

Operatori di Stringa

PHP ha due operatori dedicati alle stringhe:

  • . — l'operatore di concatenazione, unisce due stringhe.
  • .= — l'operatore di assegnazione con concatenazione, aggiunge alla variabile.
<?php
$greeting = "Hello";
$greeting .= ", World!";   // append
echo $greeting;            // Hello, World!
echo "PHP" . " " . "rocks"; // PHP rocks

Operatori di Array

Gli operatori di array lavorano su interi array.

OperatoreNomeDescrizione
+Unionele chiavi da destra vengono aggiunte solo se mancanti a sinistra
==Uguaglianzastesse coppie chiave/valore
===Identitàstesse coppie, stesso ordine, stessi tipi
<?php
$a = ["a" => 1, "b" => 2];
$b = ["b" => 99, "c" => 3];

print_r($a + $b);
// Array ( [a] => 1 [b] => 2 [c] => 3 )
// "b" keeps the LEFT value (2), "c" is added

Operatore Null-Coalescing ??

L'operatore ?? restituisce il suo operando sinistro se esiste e non è null, altrimenti il destro. È il sostituto pulito per i controlli isset().

<?php
$data = ["name" => "Ann"];

$name = $data["name"] ?? "Guest";  // "Ann"
$role = $data["role"] ?? "Member"; // "Member" — key missing, no warning
echo "$name / $role";              // Ann / Member

L'assegnazione null-coalescing ??= assegna solo quando la variabile è attualmente null o non impostata: $config["theme"] ??= "dark";.

Precedenza degli Operatori

Quando un'espressione mescola operatori, la precedenza decide quale viene eseguito per primo, proprio come in matematica (* prima di +). Usa le parentesi per rendere esplicita l'intenzione e sovrascrivere i valori predefiniti.

<?php
echo 2 + 3 * 4;     // 14  — * binds tighter than +
echo (2 + 3) * 4;   // 20  — parentheses force addition first

Dal più alto al più basso, alcuni livelli chiave: **, poi !, poi * / %, poi + -, poi confronto (< > == ===), poi &&, poi ||, e infine =. In caso di dubbio, aggiungi parentesi — non costano nulla e prevengono i bug.

  • Aritmetici (+ - * / % **) operano sui numeri; / restituisce un float, % restituisce il resto.
  • Assegnazione (= += .= …) memorizza e aggiorna valori; le forme composte sono abbreviazioni.
  • Confronto (== === != <=>) restituisce booleani — preferisci === stretto per evitare sorprese da type-juggling.
  • Logici (&& || !) combina condizioni ed esegue il corto-circuito.
  • Incremento/decremento (++ --) si differenziano per posizione pre/post.
  • Stringa (. .=) unisce testo; array (+ == ===) confronta e unisce array.
  • ?? fornisce valori predefiniti per i valori mancanti; la precedenza e le parentesi controllano l'ordine di valutazione.

Successivamente, metti questi operatori al lavoro all'interno delle istruzioni condizionali e dei cicli.

Pratica

Pratica
Quali dei seguenti sono tipi validi di operatori in PHP?
Quali dei seguenti sono tipi validi di operatori in PHP?
Was this page helpful?