endforeach
Das Schlüsselwort "endforeach" ist eine Kontrollstruktur in PHP, die das Ende einer "foreach"-Schleife markiert. Syntax und Verwendung erklärt.
Das PHP-Schlüsselwort endforeach
endforeach ist das schließende Schlüsselwort für die alternative Syntax von PHPs foreach-Schleife. Anstatt den Schleifenkörper in geschweifte Klammern einzuschließen, öffnet man den Block mit einem Doppelpunkt (:) und schließt ihn mit endforeach;. Das Verhalten ist identisch mit der Klammern-Variante — nur die Interpunktion ändert sich.
Diese Seite behandelt die Syntax, den geeigneten Einsatz, funktionierende Beispiele sowie typische Fallstricke (Mischen von Syntaxen, Referenzen), über die viele stolpern.
Syntax
Man ersetzt die öffnende { durch : und die schließende } durch endforeach;:
foreach ($array as $value):
// code to be executed
endforeach;Es funktioniert auch mit der Schlüssel/Wert-Form:
foreach ($array as $key => $value):
// code to be executed
endforeach;Beide sind funktional identisch mit der standardmäßigen Klammern-Syntax:
foreach ($array as $value) {
// code to be executed
}Wann man es verwenden sollte
Die alternative Syntax existiert hauptsächlich für Templates — Dateien, die PHP und HTML mischen. Eine schließende } kann schwer zuzuordnen sein, wenn sich HTML dazwischen befindet, während endforeach; selbstdokumentierend ist:
<ul>
<?php foreach ($products as $product): ?>
<li><?= htmlspecialchars($product) ?></li>
<?php endforeach; ?>
</ul>In reinem PHP-Code (ohne eingebettetes HTML) bevorzugen die meisten Teams die Klammern-Syntax. Wähle einen Stil pro Datei und bleibe dabei konsistent.
Beispiele
Beispiele für PHP endforeach
<?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 = cherryBeispiel 1 iteriert über eine einfache Liste und gibt jeden Wert aus; Beispiel 2 iteriert über ein assoziatives array und erfasst sowohl den $key als auch den $value.
Häufige Fehler
Die beiden Syntaxen nicht mischen. Wenn man mit : öffnet, muss man mit endforeach; schließen — und wenn man mit { öffnet, muss man mit } schließen. Das Mischen führt zu einem Parse-Fehler:
// Parse error: this is invalid
foreach ($array as $value): // opens with a colon
echo $value;
} // ...but tries to close with a braceDas Semikolon nicht vergessen. Es heißt endforeach;, nicht endforeach. Das Vergessen des Semikolons ist ein häufiger Tippfehler, der einen Syntaxfehler auslöst.
Der Referenz-Fallstrick gilt auch hier. Wie bei jedem foreach gilt: Wenn man per Referenz schleift (as &$value), zeigt die Variable $value nach dem Schleifenende noch auf das letzte Element. Immer danach unset($value) aufrufen, um unerwartete Fehler zu vermeiden:
$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 )Verwandte Schlüsselwörter der alternativen Syntax
endforeach gehört zu einer Familie von Terminatoren der alternativen Syntax. Jede Schleife und jede Bedingung hat ihr eigenes:
endif— schließt einenif:-Blockendfor— schließt einenfor:-Blockendswitch— schließt einenswitch:-Block
Zur Schleife selbst siehe das vollständige Kapitel zur foreach-Schleife.
Fazit
endforeach schließt die Doppelpunkt-Form einer foreach-Schleife. Verwende es in Templates, wo PHP und HTML vermischt sind, halte die Syntax innerhalb eines Blocks konsistent und vergiss das abschließende Semikolon nicht.