elseif
La parola chiave "elseif" è una struttura di controllo PHP usata con "if" per eseguire un blocco quando la condizione "if" è falsa
La parola chiave PHP elseif
elseif è una struttura di controllo in PHP che aggiunge una condizione extra a un'istruzione if. Il suo blocco viene eseguito solo quando tutte le condizioni precedenti sono false e la propria condizione è vera. È possibile concatenare tutte le clausole elseif necessarie, terminando facoltativamente con un else che gestisce tutti i casi rimanenti.
Questa pagina tratta la sintassi, come vengono valutate le condizioni in ordine, la sintassi alternativa con i due punti, la distinzione tra elseif e else if (un errore facile da commettere) e le insidie più comuni.
Sintassi
<?php
if (condition1) {
// runs if condition1 is true
} elseif (condition2) {
// runs if condition1 is false AND condition2 is true
} elseif (condition3) {
// runs if condition1 and condition2 are false AND condition3 is true
} else {
// runs if none of the above conditions are true
}PHP valuta le condizioni dall'alto verso il basso e si ferma alla prima che è vera — quel blocco viene eseguito e il resto della catena (compreso else) viene ignorato. L'else finale è opzionale; senza di esso, non accade nulla quando tutte le condizioni sono false.
Un esempio di base
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} elseif ($myNumber == 5) {
echo "Number is 5";
} else {
echo "Number is not 4 or 5";
}
// Output: Number is 5Poiché $myNumber == 4 è falso ma $myNumber == 5 è vero, viene eseguito il secondo blocco e else non viene mai raggiunto.
Concatenare più condizioni
elseif è particolarmente utile quando occorre mappare un valore su più intervalli mutualmente esclusivi. Il primo ramo corrispondente vince, quindi ordina le condizioni dalla più specifica alla più generale:
<?php
$score = 82;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo "Grade: {$grade}";
// Output: Grade: BUn punteggio di 82 non supera il primo test (>= 90) ma supera il secondo (>= 80), quindi $grade diventa "B" e i rami rimanenti vengono ignorati.
elseif vs else if
PHP accetta sia elseif (una sola parola) che else if (due parole) — si comportano in modo identico quando si usano le parentesi graffe:
<?php
$x = 2;
if ($x === 1) {
echo "one";
} else if ($x === 2) { // same as elseif
echo "two";
}
// Output: twoL'eccezione è la sintassi alternativa con i due punti (vedi sotto): in quel caso è obbligatorio scrivere elseif come una sola parola. else if è un errore di sintassi all'interno di un blocco if: ... endif;. Per evitare sorprese, molte guide di stile raccomandano di usare sempre elseif come parola singola.
Sintassi alternativa (con i due punti)
Quando si mescola PHP con HTML nei template, la sintassi con i due punti è spesso più leggibile delle parentesi graffe. Usa endif; per chiudere il blocco:
<?php
$role = "editor";
if ($role === "admin"):
echo "Full access";
elseif ($role === "editor"):
echo "Can edit content";
else:
echo "Read only";
endif;
// Output: Can edit contentQuesto si abbina naturalmente alla parola chiave endif nei template HTML. Per saperne di più, consulta la panoramica di if / else / elseif.
Insidie comuni
=vs==. All'interno di una condizione,=assegna anziché confrontare. Usa==per il confronto non rigoroso o===per il confronto rigoroso (con controllo del tipo).- L'ordine conta. Poiché vince il primo ramo vero, una condizione generica posizionata in anticipo può oscurare quelle più specifiche successive. Nell'esempio del voto, mettere
$score >= 70per primo assegnerebbe"C"a ogni punteggio sufficiente. elseifrichiede unifiniziale. Non può stare da solo — appartiene sempre a una catenaifesistente.
Quando usare elseif vs switch
Usa elseif per intervalli, condizioni combinate o test su variabili diverse. Quando si confronta un singolo valore con molte opzioni fisse, un'istruzione switch è di solito più leggibile.
Vedi anche
if— l'istruzione cheelseifestendeelse— il ramo di fallback onnicomprensivoendif— chiude la forma con sintassi a due puntiswitch— ramificazione multipla su un unico valore