PHP <7,3 </h1>
Если вы недостаточно знаете о массиве (вы не уверены, является ли первый ключ foo или bar ), тогда массив также может быть, возможно, пусто .
Так что было бы лучше проверить, особенно если есть вероятность, что возвращаемое значение может быть логическим FALSE:
$value = empty($arr) ? $default : reset($arr);
Приведенный выше код использует reset
, поэтому имеет побочные эффекты (сбрасывает внутренний указатель массива), поэтому вы можете предпочесть использовать array_slice
для быстрого доступа к копии первого элемента массив:
$value = $default;
foreach(array_slice($arr, 0, 1) as $value);
Предполагая, что вы хотите получить ключ и значение отдельно , вам нужно добавить четвертый параметр в array_slice
:
foreach(array_slice($arr, 0, 1, true) as $key => $value);
Для получения первого предмета в паре (key => value
):
$item = array_slice($arr, 0, 1, true);
Простая модификация для получения последнего элемента, ключа и значения отдельно:
foreach(array_slice($arr, -1, 1, true) as $key => $value);
производительности
Если массив не очень большой, вам на самом деле не нужно array_slice
, и вы можете получить копию всего массива ключей, а затем получить первый элемент:
$key = count($arr) ? array_keys($arr)[0] : null;
Однако, если у вас очень большой массив, вызов array_keys
потребует значительного времени и памяти больше, чем array_slice
(обе функции обходят массив, но последняя завершается, как только набирает требуемое число предметов - это один).
Примечательным исключением является случай, когда у вас есть первый ключ, который указывает на очень большой и извилистый объект. В этом случае array_slice
будет дублировать этот первый большой объект, а array_keys
будет захватывать только ключи.
PHP 7.3
PHP 7.3 реализует array_key_first()
, а также array_key_last()
. Они явно предоставлены для эффективного доступа к первому и последнему ключам без сброса внутреннего состояния массива как побочного эффекта.
Таким образом, в PHP 7.3 к первому значению из $array
можно получить доступ с помощью
$array[array_key_first($array)];
Вам все же лучше проверить, что массив не пустой, или вы получите ошибку:
$firstKey = array_key_first($array);
if (null === $firstKey) {
$value = "Array is empty"; // An error should be handled here
} else {
$value = $array[$firstKey];
}