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

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

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

Начать курс

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

Вы когда-нибудь задумывались, сколько способов существует в PHP, чтобы получить первый элемент массива? Казалось бы, тривиальная задача — а вариантов целых пять, и каждый со своими нюансами. На Stack Overflow этот вопрос собрал тысячи просмотров, и это не случайно: новички часто попадаются в ловушки, а опытные разработчики спорят о производительности.

Сегодня мы разберём все популярные методы, их плюсы и минусы, а также узнаем, какой из них самый быстрый и безопасный. Поехали!

1. Прямое обращение по индексу [0]

Самый очевидный способ — обратиться к нулевому элементу. Но здесь кроется первая ловушка. Этот метод работает только для массивов с числовыми ключами, начинающимися с нуля.

<?php
$fruits = ['apple', 'banana', 'cherry'];
echo $fruits[0]; // apple

// А что если ключи не с нуля?
$users = [1 => 'Alice', 3 => 'Bob'];
echo $users[0]; // Notice: Undefined offset: 0
?>

Более того, если массив пустой, вы получите ошибку. Поэтому использовать этот метод стоит только когда вы на 100% уверены в структуре массива.

2. Функция current() — неожиданный фаворит

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

<?php
$colors = ['red', 'green', 'blue'];
echo current($colors); // red
?>

Важный нюанс: если вы ранее использовали next(), prev() или end(), указатель сместится. Чтобы гарантированно получить первый элемент, предварительно вызовите reset().

<?php
$colors = ['red', 'green', 'blue'];
next($colors); // смещаем указатель
echo current($colors); // green (уже не первый!)

reset($colors); // сбрасываем указатель
echo current($colors); // red
?>

3. reset() — сброс указателя и получение первого элемента

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

<?php
$data = ['x' => 10, 'y' => 20, 'z' => 30];
$first = reset($data);
echo $first; // 10

// Теперь можно безопасно итерировать
foreach ($data as $key => $value) {
    // Начнём с первого элемента
}
?>

Когда использовать: когда вам нужно гарантированно получить первый элемент, неважно какой у него ключ. Идеально для ассоциативных массивов.

4. array_shift() — опасный красавчик

array_shift() извлекает первый элемент и удаляет его из массива. Это мощный инструмент, но с побочным эффектом.

<?php
$queue = ['task1', 'task2', 'task3'];
$firstTask = array_shift($queue);

echo $firstTask; // task1
print_r($queue);
// Array ( [0] => task2 [1] => task3 )
?>

Обратите внимание: ключи переиндексируются! Если у вас были строковые ключи, они сохранятся, но числовые — сбросятся. Это может привести к неожиданным багам.

Когда использовать: в задачах очереди (FIFO), когда элемент нужно не только прочитать, но и убрать из списка.

5. array_slice() — универсальный солдат

Безопасный метод, который возвращает срез массива, не изменяя исходный. Чтобы получить первый элемент, используем array_slice($array, 0, 1).

<?php
$mixed = ['a' => 1, 'b' => 2, 'c' => 3];
$firstPiece = array_slice($mixed, 0, 1);

print_r($firstPiece);
// Array ( [a] => 1 )
?>

Важно: эта функция возвращает массив, а не значение. Чтобы получить само значение, добавьте [0] или используйте current() на результате.

<?php
$firstValue = array_slice($mixed, 0, 1)[0]; // PHP 5.4+
// Или
$firstValue = current(array_slice($mixed, 0, 1));
?>

Сравнение производительности: какой метод быстрее?

Мы провели небольшой тест на массиве из 10 000 элементов, повторяя операцию 100 000 раз. Вот результаты:

  • $array[0] — самый быстрый (но работает только с числовыми ключами)
  • current() — второй по скорости
  • reset() — немного медленнее current, но безопаснее
  • array_slice() — заметно медленнее (создаёт новый массив)
  • array_shift() — самый медленный (изменяет массив)

Но помните: оптимизация ради оптимизации не нужна. Выбирайте метод по смыслу, а не по микросекундам.

Как получить первый элемент ассоциативного массива?

Самый надёжный способ — reset() или current() в паре с reset(). Если вам нужен и ключ, и значение, используйте array_key_first() (доступна с PHP 7.3).

<?php
$profile = [
    'name' => 'Иван',
    'age' => 30,
    'city' => 'Москва'
];

// Получаем первый ключ
$firstKey = array_key_first($profile); // 'name'
// Получаем значение
$firstValue = $profile[$firstKey]; // 'Иван'

// Или одной строкой:
$firstValue = $profile[array_key_first($profile)];
?>

Для старых версий PHP (до 7.3) используйте reset() + key():

<?php
reset($profile);
$firstKey = key($profile); // 'name'
$firstValue = current($profile); // 'Иван'
?>

Частые ошибки и как их избежать

Ошибка 1: Предположение, что ключи начинаются с 0

Массив может быть создан с пропущенными индексами или переиндексирован после array_shift(). Всегда проверяйте структуру.

<?php
$arr = [1 => 'one', 2 => 'two'];
// $arr[0] вернёт ошибку

// Правильно:
reset($arr);
echo current($arr); // one
?>

Блоги

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