Как вытащить первый элемент массива в PHP: 7 рабочих способов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Массивы в PHP: вечная головоломка с первым элементом

Каждый PHP-разработчик хотя бы раз в жизни сталкивался с задачей: «Как получить первый элемент массива?». Казалось бы, что может быть проще? Но дьявол, как известно, кроется в деталях. Массивы в PHP бывают индексированными (с числовыми ключами) и ассоциативными (со строковыми ключами), и то, что работает для одного типа, может подвести для другого.

В этой статье мы разберём 7 проверенных способов получить первый элемент массива, сравним их производительность и узнаем, какой метод выбрать в каждой конкретной ситуации. Вы узнаете, почему array_shift() не всегда лучший выбор, и как reset() может спасти ваш код.

Содержание

Способ 1: array_shift() — классика жанра

Самый очевидный способ, который приходит в голову — использовать функцию array_shift(). Она извлекает первый элемент массива и удаляет его из исходного массива.

<?php
$fruits = ['apple', 'banana', 'cherry'];
$first = array_shift($fruits);
echo $first; // apple
print_r($fruits); // [1 => 'banana', 2 => 'cherry']
?>

Плюсы: Простота, интуитивность.

Минусы: Функция изменяет исходный массив. Если вам нужно сохранить данные, этот способ не подходит. Кроме того, для больших массивов операция может быть затратной.

Способ 2: reset() — хитрый трюк с указателем

Функция reset() устанавливает внутренний указатель массива на первый элемент и возвращает его значение. При этом массив не изменяется!

<?php
$fruits = ['apple', 'banana', 'cherry'];
$first = reset($fruits);
echo $first; // apple
print_r($fruits); // ['apple', 'banana', 'cherry'] — массив не тронут
?>

Этот метод отлично работает как с индексированными, так и с ассоциативными массивами. reset() — мой личный фаворит для большинства задач.

Важно: Если массив пустой, reset() вернёт false. Учитывайте это!

Способ 3: current() после reset() — для контроля

Иногда нужно не только получить первый элемент, но и убедиться, что указатель стоит именно на нём. Комбинация reset() + current() даёт полный контроль.

<?php
$fruits = ['apple', 'banana', 'cherry'];
reset($fruits);
$first = current($fruits);
echo $first; // apple
// Указатель остался на первом элементе
$second = next($fruits);
echo $second; // banana
?>

Этот способ полезен, когда вы планируете итерировать массив с помощью next(), prev() и других функций работы с указателем.

Способ 4: array_values() + [0] — универсальный солдат

Если вы работаете с ассоциативным массивом и не знаете ключ первого элемента, можно сбросить все ключи с помощью array_values() и обратиться к нулевому индексу.

<?php
$user = ['name' => 'John', 'age' => 30, 'city' => 'New York'];
$values = array_values($user);
$first = $values[0];
echo $first; // John
?>

Минус: Создаётся копия массива, что для больших объёмов данных может быть ресурсоёмко.

Способ 5: array_key_first() — для PHP 7.3+

Начиная с PHP 7.3, появилась функция array_key_first(), которая возвращает ключ первого элемента. Чтобы получить значение, нужно обратиться к массиву по этому ключу.

<?php
$user = ['name' => 'John', 'age' => 30];
$firstKey = array_key_first($user);
$first = $user[$firstKey];
echo $first; // John
?>

Этот метод хорош тем, что не сдвигает внутренний указатель массива и не изменяет его. Идеально для ассоциативных массивов!

Способ 6: foreach с break — велосипед, но работает

Иногда нужно не просто получить первый элемент, а выполнить с ним какие-то дополнительные действия. Цикл foreach с break даёт такую возможность.

<?php
$fruits = ['apple', 'banana', 'cherry'];
foreach ($fruits as $key => $value) {
    $first = $value;
    break;
}
echo $first; // apple
?>

Этот способ чуть медленнее других, но он даёт гибкость: вы можете одновременно получить и ключ, и значение, и выполнить проверки.

Способ 7: array_slice() — для любителей функциональщины

Функция array_slice() возвращает срез массива. Если указать смещение 0 и длину 1, получим первый элемент в виде массива.

<?php
$fruits = ['apple', 'banana', 'cherry'];
$firstSlice = array_slice($fruits, 0, 1);
$first = $firstSlice[0];
echo $first; // apple
?>

Минус: Возвращает массив, а не значение. Нужно дополнительно извлекать элемент.

Сравнение производительности

Я провёл небольшой бенчмарк на массиве из 10 000 элементов (1000 итераций). Вот результаты (чем меньше — тем лучше):

Метод

Блоги

Рекомендаций по книгам