确定可能关联数组中的第一个键的最佳方法是什么?我的第一个想法是先遍历数组,然后立即打破它,如下所示:
foreach ($an_array as $key => $val) break;
因此,$key包含第一个键,但这似乎效率很低。有人有更好的解决方案吗?
确定可能关联数组中的第一个键的最佳方法是什么?我的第一个想法是先遍历数组,然后立即打破它,如下所示:
foreach ($an_array as $key => $val) break;
因此,$key包含第一个键,但这似乎效率很低。有人有更好的解决方案吗?
当前回答
array_cchunk将数组拆分为块,可以使用:
$arr = ['uno'=>'one','due'=>'two','tre'=>'three'];
$firstElement = array_chunk($arr,1,true)[0];
var_dump($firstElement);
其他回答
这是我找到的最简单的方法。快速且只有两行代码:-D
$keys = array_keys($array);
echo $array[$keys[0]];
请查找以下内容:
$yourArray = array('first_key'=> 'First', 2, 3, 4, 5);
$keys = array_keys($yourArray);
echo "Key = ".$keys[0];
工作示例:
2019年更新
从PHP 7.3开始,有一个名为array_key_first()的新内置函数,它将在不重置内部指针的情况下从给定数组中检索第一个键。查看文档以了解更多信息。
您可以使用重置和按键:
reset($array);
$first_key = key($array);
它基本上与初始代码相同,但开销稍小,而且发生的情况更明显。
只需记住调用reset,否则可能会得到数组中的任何键。您也可以使用结束而不是重置来获取最后一个密钥。
如果您希望键获得第一个值,reset实际上会返回它:
$first_value = reset($array);
但有一种特殊情况需要注意(因此首先检查数组的长度):
$arr1 = array(false);
$arr2 = array();
var_dump(reset($arr1) === reset($arr2)); // bool(true)
因为可以使用PHP 7.3.0函数array_key_first()。
有几种方法可以为PHP7.3.0之前的版本提供此功能。可以使用array_keys(),但这可能效率很低。也可以使用reset()和key(),但这可能会更改内部数组指针。一个有效的解决方案,它不改变内部数组指针,写为polyfill:
<?php
if (!function_exists('array_key_first')) {
function array_key_first(array $arr) {
foreach($arr as $key => $unused) {
return $key;
}
return null;
}
}
?>
如果效率对您来说不是那么重要,您可以在PHP5.4(或更高版本)中使用array_keys($yourArray)[0]。
示例:
# 1
$arr = ["my" => "test", "is" => "best"];
echo array_keys($arr)[0] . "\r\n"; // prints "my"
# 2
$arr = ["test", "best"];
echo array_keys($arr)[0] . "\r\n"; // prints "0"
# 3
$arr = [1 => "test", 2 => "best"];
echo array_keys($arr)[0] . "\r\n"; // prints "1"
与解决方案相比的优势:
list($firstKey) = array_keys($yourArray);
就是可以将array_keys($arr)[0]作为函数参数传递(即doSomething(array_key($arr)[0],$otherParameter))。
HTH