如何从关联的PHP数组中获取第一项?< 7.3 菲律宾比索性能7.3 菲律宾比索
2022-08-30 06:26:46
如果我有一个这样的数组:
$array['foo'] = 400;
$array['bar'] = 'xyz';
我想在不知道数组的键的情况下从该数组中获取第一项,我该怎么做?这有功能吗?
如果我有一个这样的数组:
$array['foo'] = 400;
$array['bar'] = '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);
如果数组不是很大,您实际上并不需要,而是可以获取整个keys数组的副本,然后获取第一项:array_slice
$key = count($arr) ? array_keys($arr)[0] : null;
但是,如果您有一个非常大的数组,则调用将需要比(两个函数遍历数组,但后者在收集所需数量的项目后立即终止 - 这是一个)。array_keys
array_slice
一个值得注意的例外是,当您有第一个指向非常大且复杂的对象的键时。在这种情况下,将复制第一个大对象,而只会抓取键。array_slice
array_keys
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];
}