确定可能关联数组中的第一个键的最佳方法是什么?我的第一个想法是先遍历数组,然后立即打破它,如下所示:

foreach ($an_array as $key => $val) break;

因此,$key包含第一个键,但这似乎效率很低。有人有更好的解决方案吗?


当前回答

我认为最好和最快的方法是:

$first_key=key(array_slice($array, 0, 1, TRUE))

其他回答

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)

key($an_array)将为您提供第一个密钥

edit-per-Blixt:您应该调用reset($array);before键($anarray)将指针重置到数组的开头。

array_keys返回一个键数组。取第一个条目。或者,您可以调用数组上的reset,然后调用key。后一种方法可能稍微快一点(Thoug我没有测试它),但它有重置内部指针的副作用。

对我来说最好的方法是

array_shift(array_keys($array))

arraykeys从初始数组中获取关键字数组,然后arrayshift从其第一个元素值中剪切。为此,您需要PHP 5.4+。

$myArray = array(
    2 => '3th element',
    4 => 'first element',
    1 => 'second element',
    3 => '4th element'
);
echo min(array_keys($myArray)); // return 1