如何从关联的PHP数组中获取第一项?

如果我有一个数组如:

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

而我想在不知道密钥的情况下从数组中获得第一个项目,我该怎么做? 有这个function吗?

如果在数组中有一个元素, 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); 

只是为了让我们有其他的select: 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);

作为重置()

在复位后返回数组的第一个元素;

在获取第一个元素之前testing一个variables是否是一个数组。 dynamic创build数组时,如果它设置为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];