Перейти к содержимому

each()

Введение

Как разработчик PHP, важно понимать различные функции работы с массивами, которые предоставляет PHP. Одна из таких функций — each(), которая исторически использовалась для перебора элементов массива и возврата пары «ключ-значение». Примечание: each() была помечена как устаревшая в PHP 7.2 и полностью удалена в PHP 8.0. В этой статье рассматриваются её устаревшее поведение, синтаксис и параметры, а также предлагаются современные альтернативы.

Синтаксис

Синтаксис функции each() выглядит следующим образом:

Синтаксис функции Each() в PHP

php
each(array $array): array|false

Функция each() принимает массив в качестве параметра и возвращает массив или false в случае ошибки.

Параметры

Функция each() принимает только один параметр — массив. Массив может быть индексным или ассоциативным. В случае индексного массива ключами будут целые числа, начинающиеся с 0, а в случае ассоциативного массива ключами будут имена, присвоенные каждому элементу.

Применение

Функция each() используется для перебора элементов массива и возврата пары «ключ-значение». Эту функцию можно использовать как с индексными, так и с ассоциативными массивами. Каждый вызов each() перемещает внутренний указатель массива. Функция each() возвращает массив, содержащий четыре элемента: числовые индексы 0 и 1 (псевдонимы для ключа и значения) и строковые индексы key и value.

Ниже приведен пример использования функции each():

Пример использования функции each() в PHP

php
<?php
// Legacy PHP 7.x example. This will cause a fatal error in PHP 8.0+.
$array = ["one" => 1, "two" => 2, "three" => 3];

while ($element = each($array)) {
    echo $element['key'] . ' => ' . $element['value'] . '<br>';
}

В приведенном выше примере мы сначала определяем ассоциативный массив с тремя парами «ключ-значение». Затем мы используем функцию each() для перебора элементов массива и возврата пары «ключ-значение». Наконец, мы используем цикл while для вывода каждой пары «ключ-значение».

Современный аналог для PHP 8+ Поскольку each() больше недоступна, для перебора массивов используйте foreach:

php
<?php
$array = ["one" => 1, "two" => 2, "three" => 3];

foreach ($array as $key => $value) {
    echo $key . ' => ' . $value . '<br>';
}

Отличия each() от других похожих функций работы с массивами

Функция each() похожа на другие функции работы с массивами, такие как foreach(), array_walk() и array_map(). Однако между этими функциями есть некоторые различия:

  • foreach() перебирает каждый элемент массива и присваивает значение переменной. Она не изменяет внутренний указатель массива и является рекомендуемым современным подходом.
  • array_walk() и array_map() используются для перебора массива и применения пользовательской функции к каждому элементу. Они не возвращают пару «ключ-значение», как функция each().

Статус устаревания и современные альтернативы

Функция each() помечена как устаревшая и удалена в современных версиях PHP. Её больше не рекомендуется использовать. Конструкция языка foreach является стандартной, более безопасной и производительной альтернативой для перебора массивов в PHP 8+.

Заключение

Подводя итог, функция each() исторически была полезна разработчикам PHP для перебора элементов массива и возврата пары «ключ-значение». Однако из-за её удаления в PHP 8.0 разработчикам следует использовать foreach для всех современных задач перебора массивов.

Практика

Что верно относительно функции each() в PHP согласно содержанию на указанной странице?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.