Как получить первый элемент из ассоциативного массива PHP?
Если бы у меня был массив типа:
$array['foo'] = 400;
$array['bar'] = 'xyz';
и я хотел получить первый элемент из этого массива, не зная ключа для него, как бы я это сделал? Есть ли функция для этого?
13 ответов:
reset()
дает вам первое значение массива, если у вас есть элемент внутри массива:$value = reset($array);
Он также дает вам
FALSE
в случае, если массив пуст.
поддельный цикл, который ломается на первой итерации:
$key = $value = NULL; foreach ($array as $key => $value) { break; } echo "$key = $value\n";
или использовать
each()
(предупреждение:устарел с PHP 7.2.0):reset($array); list($key, $value) = each($array); echo "$key = $value\n";
есть несколько вариантов.
array_shift()
вернет первый элемент, но он также удалит первый элемент из массива.$first = array_shift($array);
current()
возвращает значение массива, на который указывает его указатель внутренней памяти, который является первым элементом по умолчанию.$first = current($array);
если вы хотите, чтобы убедиться, что он указывает на первый элемент, вы всегда можете использовать
reset()
.reset($array); $first = current($array);
так что у нас есть другие варианты:
reset($arr);
достаточно хорошо, если вы не пытаетесь сохранить указатель массива на месте, и с очень большими массивами он несет минимальное количество накладных расходов. Тем не менее, есть некоторые проблемы с ним:$arr = array(1,2); current($arr); // 1 next($arr); // 2 current($arr); // 2 reset($arr); // 1 current($arr); // 1 !This was 2 before! We've changed the array's pointer.
способ сделать это без изменения указателя:
$arr[reset(array_keys($arr))]; // OR reset(array_values($arr));
пользу
$arr[reset(array_keys($arr))];
это то, что он вызывает предупреждение, если массив на самом деле пуст.
если вы не знаете достаточно о массиве (вы не знаете, является ли первый ключ фу или бар) тогда массив вполне может быть, может быть,пустой.
поэтому было бы лучше проверить, особенно если есть вероятность, что возвращаемое значение может быть логическим 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);
мы можем сделать $first = reset ($array);
вместо
reset($array);
$first = current ($array);
Как сбросить()
возвращает первый элемент массива после сброса;
проверьте, является ли переменная массивом перед получением первого элемента. При динамическом создании массива, если он имеет значение null, вы получите сообщение об ошибке.
Например:
if(is_array($array)) { reset($array); $first = key($array); }
используйте функцию reset (), чтобы получить первый элемент из этого массива, не зная ключа для него, как это.
$value = array('foo' => 400, 'bar' => 'xyz'); echo reset($value);
выход // 400
вы могли бы использовать array_shift
Я делаю это, чтобы получить первое и последнее значение. Это работает и с большим количеством значений.
$a = array( 'foo' => 400, 'bar' => 'xyz', ); $first = current($a); //400 $last = end($a); //xyz
Вы можете попробовать это.
Чтобы получить первое значение массива : -<?php $large_array = array('foo' => 'bar', 'hello' => 'world'); var_dump(current($large_array)); ?>
чтобы получить первый ключ массива
<?php $large_array = array('foo' => 'bar', 'hello' => 'world'); $large_array_keys = array_keys($large_array); var_dump(array_shift($large_array_keys)); ?>