如何从关联的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];