Each: примеры (PHP)

Использование функции each в PHP с примерами кода
Раздел: Работа с массивами
each(array &$array): array
Описание функции each

Функция each в PHP применялась для последовательного перебора элементов массива. Она возвращала текущую пару ключ-значение и перемещала внутренний указатель массива вперед.

Аргументы функции

Функция принимала один обязательный параметр:

  • &array — переменная массива, передаваемая по ссылке.

Использовалась в циклах для итерации по массиву, особенно до широкого распространения конструкции foreach. Возвращала массив из четырех элементов для текущей позиции указателя или false, если указатель вышел за пределы массива.

Основные примеры использования

Пример перебора ассоциативного массива:

<?php
$array = ['имя' => 'Анна', 'возраст' => 30];
$result = each($array);
print_r($result);
?>
Array
(
    [1] => Анна
    [value] => Анна
    [0] => имя
    [key] => имя
)

Пример с числовым индексом:

<?php
$array = ['яблоко', 'банан'];
$result = each($array);
print_r($result);
?>
Array
(
    [1] => яблоко
    [value] => яблоко
    [0] => 0
    [key] => 0
)
Современные альтернативы в PHP

Начиная с PHP 7.2 функция each считается устаревшей, а в PHP 8.0 удалена. Для итерации по массивам предпочтительнее использовать:

  • foreach — основная конструкция для перебора массивов и объектов. Предлагает простой синтаксис и не требует ручного управления указателем.
  • key() и current() с next() — комбинация функций для ручного перемещения по массиву.
  • array_keys() или array_values() — для получения отдельных компонентов массива.

Конструкция foreach стала стандартом благодаря читаемости и безопасности, она не зависит от внутреннего указателя массива.

Типичные ошибки
Использование в PHP 8 и выше

Вызов удаленной функции вызывает фатальную ошибку:

<?php
$array = [1, 2];
each($array);
?>
Fatal error: Uncaught Error: Call to undefined function each()
Передача не массива

В версиях PHP, где функция существовала, передача не массива приводила к предупреждению и возврату false:

<?php
$result = each('строка');
var_dump($result);
?>
Warning: each() expects parameter 1 to be array, string given
bool(false)
Изменения в версиях PHP
  • PHP 7.2.0 — функция each объявлена устаревшей. Вызов генерировал предупреждение E_DEPRECATED.
  • PHP 8.0.0 — функция полностью удалена из ядра языка. Попытка вызова вызывает ошибку.

Удаление связано с продвижением конструкции foreach как более эффективного и понятного способа итерации.

Расширенные примеры
Имитация each через современные функции PHP

Реализация поведения each с использованием key(), current() и next():

Пример php
<?php
function emulateEach(&$array) {
    $key = key($array);
    if ($key === null) {
        return false;
    }
    $value = current($array);
    next($array);
    return [1 => $value, 'value' => $value, 0 => $key, 'key' => $key];
}

$data = ['цвет' => 'красный', 'код' => '#FF0000'];
$result = emulateEach($data);
print_r($result);
?>
Array
(
    [1] => красный
    [value] => красный
    [0] => цвет
    [key] => цвет
)
Исторический пример с reset()

Ранее each часто использовали в паре с reset() для сброса указателя:

Пример php
<?php
$array = ['первый', 'второй'];
reset($array);
while (list($key, $val) = each($array)) {
    echo "$key => $val\n";
}
?>
0 => первый
1 => второй
Аналоги в других языках

Each в Javascript

Метод entries() возвращает итератор по парам ключ-значение:

const arr = ['a', 'b'];
const iterator = arr.entries();
console.log(iterator.next().value);
[0, 'a']

Each в Python

Функция enumerate() возвращает индекс и значение для итерируемых объектов:

for i, value in enumerate(['яблоко', 'банан']):
    print(i, value)
0 яблоко
1 банан

Each в MySQL

Прямого аналога нет, так как SQL работает с наборами записей, а не с массивами в процедурном стиле.

PHP each function comments

En
Each Return the current key and value pair from an array and advance the array cursor