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

Если бы у меня был массив вроде:

$array['foo'] = 400; $array['bar'] = 'xyz'; 

И я хотел получить первый элемент из этого массива, не зная ключа для него, как бы я это сделал? Есть ли функция для этого?

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))]; заключается в том, что он вызывает предупреждение, если массив фактически пуст.

Другой простой и простой способ сделать это использует array_values

 array_values($array)[0] 

Мы можем сделать $ first = reset ($ array);

Вместо

  reset($array); 

$ first = current ($ array);

Как сброс ()

возвращает первый элемент массива после сброса;

Проверьте, если переменная является массивом, прежде чем получить первый элемент. При динамическом создании массива, если он установлен в null, вы получаете ошибку.

Например:

 if(is_array($array)) { reset($array); $first = key($array); } 

Вы можете использовать array_shift

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

 $a = array( 'foo' => 400, 'bar' => 'xyz', ); $first = current($a); //400 $last = end($a); //xyz 

Если вы не знаете достаточно о массиве (вы не знаете, является ли первый ключ 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); 

Вы можете попробовать это.
Чтобы получить первое значение массива: –

  <?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)); ?> 

Ты можешь сделать:

 $values = array_values($array); echo $values[0];