Istruzione PHP If-Else: Una Guida Completa
Scopri come usare le istruzioni if, else ed elseif in PHP per prendere decisioni nel codice con esempi pratici e spiegazioni chiare.
Le istruzioni condizionali permettono a un programma di seguire percorsi diversi in base a ciò che è vero nel momento in cui viene eseguito. In PHP, le istruzioni if, else ed elseif sono la base di questo processo decisionale. Questo capitolo spiega ogni forma, le condizioni che le guidano, la sintassi alternativa con i template e gli errori comuni da evitare.
Questa pagina tratta il semplice if, l'aggiunta di un ramo else, il concatenamento di condizioni con elseif, l'annidamento, la sintassi con i due punti/endif per i template e la scorciatoia ternaria.
L'istruzione if
Un'istruzione if esegue un blocco di codice solo quando la sua condizione valuta a true. La condizione si trova tra parentesi; il blocco da eseguire si trova tra parentesi graffe.
if (condition) {
// runs only when condition is true
}La condizione è qualsiasi espressione che PHP può leggere come booleano. Gli operatori di confronto (>, <, >=, <=, ==, ===, !=) e gli operatori logici (&&, ||, !) sono i mattoni fondamentali — vedi Operatori PHP per l'elenco completo.
<?php
$temperature = 30;
if ($temperature > 25) {
echo "It's warm outside.";
}
?>Poiché 30 > 25 è true, questo stampa It's warm outside.. Se la condizione fosse falsa, non verrebbe stampato nulla e PHP passerebbe semplicemente oltre.
Aggiungere un ramo else
else fornisce un blocco di riserva che viene eseguito quando la condizione if è false. Esattamente uno dei due blocchi viene eseguito — mai entrambi, mai nessuno dei due.
Qui $number > 0 è vero, quindi il primo blocco viene eseguito e l'output è 5 is a positive number. Impostando $number a -3 si salterebbe il primo blocco ed eseguirebbe l'else, stampando -3 is a negative number.
Attenzione all'operatore.
=assegna un valore, mentre==confronta. Scrivereif ($number = 0)imposta silenziosamente$numbera0e viene trattato come falso — un classico bug. Usa==(o il più rigoroso===, che verifica anche il tipo) per i confronti.
Verificare più condizioni con elseif
Quando ci sono più di due risultati possibili, concatena le condizioni con elseif. PHP verifica ogni condizione nell'ordine e esegue la prima che è vera; se nessuna corrisponde, viene eseguito l'else opzionale.
Con $number = 0, la prima condizione (> 0) è falsa, quindi PHP passa all'elseif (== 0), che è vero, e stampa 0 is zero. Una volta che un ramo corrisponde, il resto della catena viene saltato — l'ordine è importante, quindi metti prima le condizioni più specifiche.
Puoi aggiungere tutti i rami elseif di cui hai bisogno. Quando un singolo valore viene confrontato con molte opzioni fisse, un'istruzione switch è spesso più leggibile di una lunga catena elseif.
Annidamento delle istruzioni if
Un blocco if può contenere un altro if per prendere decisioni che dipendono da una precedente. Mantieni l'annidamento superficiale — più di due o tre livelli di solito indica che la logica dovrebbe essere suddivisa in funzioni.
<?php
$number = 5;
if ($number > 0) {
if ($number % 2 == 0) {
echo "$number is a positive even number";
} else {
echo "$number is a positive odd number";
}
} else {
echo "$number is not positive";
}
?>L'if esterno conferma che il numero è positivo; l'if interno verifica poi se è pari ($number % 2 == 0). Poiché 5 è positivo e dispari, l'output è 5 is a positive odd number.
Sintassi alternativa (con i due punti)
PHP offre anche una forma basata sui due punti che termina con endif. È più leggibile quando le condizioni racchiudono HTML nei template, dove le parentesi graffe non corrispondenti sono facili da perdere.
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please sign in.</p>
<?php endif; ?>Il comportamento è identico alla forma con le parentesi graffe — if (...): sostituisce if (...) {, e endif; sostituisce la } di chiusura.
La scorciatoia ternaria
Per una semplice assegnazione a due valori, l'operatore ternario ?: condensa un if/else in un'unica espressione: condizione ? valore_se_vero : valore_se_falso.
<?php
$age = 20;
$status = ($age >= 18) ? "adult" : "minor";
echo $status; // adult
?>Questo è equivalente a un blocco if/else di quattro righe. Usalo solo per condizioni brevi; i ternari annidati diventano rapidamente illeggibili.
Riepilogo
ifesegue un blocco quando la sua condizione è vera;elsefornisce il fallback.elseifconcatena condizioni aggiuntive, e il primo ramo vero vince.- Le istruzioni
ifpossono essere annidate, ma mantieni l'annidamento superficiale. - La sintassi con i due punti/
endifè utile nei template HTML, e il ternario?:abbrevia semplici scelte a due opzioni. - Confronta sempre con
==/===, non con l'assegnazione=.
Successivamente, esplora i cicli PHP per ripetere il codice finché una condizione è vera, e rivedi le variabili PHP per i valori che le tue condizioni testano.