endforeach
Ключевое слово "endforeach" в PHP завершает цикл "foreach" в альтернативном синтаксисе. Изучите синтаксис, примеры и частые ошибки.
Ключевое слово PHP endforeach
endforeach — это закрывающее ключевое слово для альтернативного синтаксиса PHP-цикла foreach. Вместо того чтобы заключать тело цикла в фигурные скобки, вы открываете блок двоеточием (:) и закрываете его с помощью endforeach;. Поведение идентично варианту с фигурными скобками — меняется только пунктуация.
На этой странице рассмотрены синтаксис, случаи применения, рабочие примеры и типичные ошибки (смешение синтаксисов, работа со ссылками), на которых часто спотыкаются разработчики.
Синтаксис
Открывающую { заменяют на :, а закрывающую } — на endforeach;:
foreach ($array as $value):
// code to be executed
endforeach;Работает и в форме «ключ/значение»:
foreach ($array as $key => $value):
// code to be executed
endforeach;Оба варианта функционально идентичны стандартному синтаксису с фигурными скобками:
foreach ($array as $value) {
// code to be executed
}Когда применять
Альтернативный синтаксис предназначен прежде всего для шаблонов — файлов, в которых PHP и HTML перемешаны. Закрывающую } бывает сложно сопоставить с открывающей скобкой, когда между ними находится HTML-разметка, тогда как endforeach; говорит само за себя:
<ul>
<?php foreach ($products as $product): ?>
<li><?= htmlspecialchars($product) ?></li>
<?php endforeach; ?>
</ul>В чистом PHP-коде (без встроенного HTML) большинство команд предпочитает синтаксис с фигурными скобками. Выберите один стиль для файла и придерживайтесь его.
Примеры
Примеры использования 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В примере 1 перебирается простой список и выводится каждое значение; в примере 2 перебирается ассоциативный array, и захватываются как $key, так и $value.
Распространённые ошибки
Не смешивайте два синтаксиса. Если вы открыли блок с :, необходимо закрыть его через endforeach; — а если открыли с {, то закрывать нужно через }. Смешение синтаксисов вызывает ошибку разбора:
// Parse error: this is invalid
foreach ($array as $value): // opens with a colon
echo $value;
} // ...but tries to close with a braceНе забывайте точку с запятой. Правильно писать endforeach;, а не endforeach. Пропуск точки с запятой — распространённая опечатка, приводящая к синтаксической ошибке.
Ловушка со ссылками актуальна и здесь. Как и в любом foreach, если вы выполняете итерацию по ссылке (as &$value), переменная $value по-прежнему указывает на последний элемент после завершения цикла. Всегда вызывайте unset($value) после цикла, чтобы избежать неожиданных ошибок:
$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 )Связанные ключевые слова альтернативного синтаксиса
endforeach входит в семейство завершающих конструкций альтернативного синтаксиса. Каждый цикл и условная конструкция имеют собственное ключевое слово:
О самом цикле читайте в главе foreach.
Заключение
endforeach закрывает форму цикла foreach с двоеточием. Используйте его в шаблонах, где PHP и HTML перемежаются, сохраняйте единый синтаксис внутри блока и не забывайте про завершающую точку с запятой.