endforeach
La parola chiave "endforeach" in PHP chiude un ciclo "foreach" con sintassi alternativa. Scopri la sintassi, gli esempi e gli errori comuni.
La parola chiave PHP endforeach
endforeach è la parola chiave di chiusura per la sintassi alternativa del ciclo foreach loop in PHP. Invece di racchiudere il corpo del ciclo tra parentesi graffe, si apre il blocco con i due punti (:) e lo si chiude con endforeach;. Il comportamento è identico alla versione con le graffe — cambia solo la punteggiatura.
Questa pagina tratta la sintassi, quando utilizzarla, esempi pratici e le insidie (mescolanza di sintassi, riferimenti) che possono trarre in inganno.
Sintassi
Si sostituisce la { di apertura con : e la } di chiusura con endforeach;:
foreach ($array as $value):
// code to be executed
endforeach;Funziona anche con la forma chiave/valore:
foreach ($array as $key => $value):
// code to be executed
endforeach;Entrambe sono funzionalmente identiche alla sintassi standard con le graffe:
foreach ($array as $value) {
// code to be executed
}Quando utilizzarla
La sintassi alternativa esiste principalmente per i template — file che mescolano PHP e HTML. Una } di chiusura può essere difficile da abbinare alla graffa di apertura quando c'è del codice HTML in mezzo, mentre endforeach; è autoesplicativa:
<ul>
<?php foreach ($products as $product): ?>
<li><?= htmlspecialchars($product) ?></li>
<?php endforeach; ?>
</ul>Nel codice PHP puro (senza HTML incorporato), la maggior parte dei team preferisce la sintassi con le graffe. Scegli uno stile per file e mantienilo consistente.
Esempi
Esempi di endforeach in PHP
<?php
// Example 1
$array = ["apple", "banana", "cherry"];
foreach ($array as $value):
echo $value . PHP_EOL;
endforeach;
// Output:
// apple
// banana
// cherry
// Example 2
$array = ["a" => "apple", "b" => "banana", "c" => "cherry"];
foreach ($array as $key => $value):
echo $key . " = " . $value . PHP_EOL;
endforeach;
// Output:
// a = apple
// b = banana
// c = cherryL'Esempio 1 itera su un elenco semplice e stampa ogni valore; l'Esempio 2 itera su un array associativo, acquisendo sia $key che $value.
Errori comuni
Non mescolare le due sintassi. Se apri con :, devi chiudere con endforeach; — e se apri con {, devi chiudere con }. Mescolarle genera un errore di parsing:
// Parse error: this is invalid
foreach ($array as $value): // opens with a colon
echo $value;
} // ...but tries to close with a braceRicorda il punto e virgola. Si scrive endforeach;, non endforeach. Dimenticare il punto e virgola è un errore di battitura comune che provoca un errore di sintassi.
L'insidia dei riferimenti vale anche qui. Come con qualsiasi foreach, se si itera per riferimento (as &$value), la variabile $value continua a puntare all'ultimo elemento dopo la fine del ciclo. Usa sempre unset($value) in seguito per evitare bug imprevisti:
$array = [1, 2, 3];
foreach ($array as &$value):
$value *= 2;
endforeach;
unset($value); // break the reference
print_r($array);
// Output:
// Array ( [0] => 2 [1] => 4 [2] => 6 )Parole chiave correlate con sintassi alternativa
endforeach fa parte di una famiglia di terminatori con sintassi alternativa. Ogni ciclo e condizionale ha il proprio:
Per il ciclo stesso, consulta il capitolo completo su foreach loop.
Conclusione
endforeach chiude la forma con i due punti di un ciclo foreach. Utilizzala nei template dove PHP e HTML sono intrecciati, mantieni la sintassi consistente all'interno di un blocco e ricorda il punto e virgola finale.