W3docs

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

Beispiel 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 brace

Das 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 einen if:-Block
  • endfor — schließt einen for:-Block
  • endswitch — schließt einen switch:-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.

Übungen

Übung
Was ist die Syntax für die Verwendung der endforeach-Kontrollstruktur in PHP?
Was ist die Syntax für die Verwendung der endforeach-Kontrollstruktur in PHP?
Was this page helpful?