W3docs

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 = cherry

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

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

  • endif — chiude un blocco if:
  • endfor — chiude un blocco for:
  • endswitch — chiude un blocco switch:

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.

Esercizio

Pratica
Qual è la sintassi per usare la struttura di controllo endforeach in PHP?
Qual è la sintassi per usare la struttura di controllo endforeach in PHP?
Was this page helpful?