W3docs

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 5

Poiché $myNumber == 4 è falso ma $myNumber == 5 è vero, viene eseguito il secondo blocco e else non viene mai raggiunto.

"Provalo tu stesso" non è disponibile per questo esempio.

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: B

Un 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: two

L'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 content

Questo 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 >= 70 per primo assegnerebbe "C" a ogni punteggio sufficiente.
  • elseif richiede un if iniziale. Non può stare da solo — appartiene sempre a una catena if esistente.

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 che elseif estende
  • else — il ramo di fallback onnicomprensivo
  • endif — chiude la forma con sintassi a due punti
  • switch — ramificazione multipla su un unico valore

Esercitati

Pratica
Cosa è corretto riguardo all'istruzione 'elseif' in PHP?
Cosa è corretto riguardo all'istruzione 'elseif' in PHP?
Was this page helpful?