如何获得数组的最后一个键?
当前回答
自PHP 7.3(2018)以来,(终于)有了这个函数: http://php.net/manual/en/function.array-key-last.php
$array = ['apple'=>10,'grape'=>15,'orange'=>20];
echo array_key_last ( $array )
将输出
orange
其他回答
我还想为这个问题提供另一种解决方案。
假设你所有的钥匙都是数字,没有缝隙, 我的首选方法是计算数组,然后从该值减去1(以解释数组键从0开始的事实。
$array = array(0=>'dog', 1=>'cat');
$lastKey = count($array)-1;
$lastKeyValue = $array[$lastKey];
var_dump($lastKey);
print_r($lastKeyValue);
这将给你:
int (1) 猫
在PHP >= 7.3中,array_key_last()是获取任何数组的最后一个键的最佳方法。使用end(), key()和reset()的组合来获取数组的最后一个键是过分的。
$array = array("one" => bird, "two" => "fish", 3 => "elephant");
$key = array_key_last($array);
var_dump($key) //output 3
比较一下
end($array)
$key = key($array)
var_dump($key) //output 3
reset($array)
如果使用end()和key()组合,则必须重置数组,使指针位于开头。
很奇怪,但是这个话题为什么没有这个答案:
$lastKey = array_keys($array)[count($array)-1];
最好的解决方案,也可以使用内联:
end($arr) && false ?: key($arr)
这种解决方案只是表达式/语句,提供的性能很好,但不是最好的性能。
内联示例用法:
$obj->setValue(
end($arr) && false ?: key($arr) // last $arr key
);
更新:在PHP 7.3+:使用(当然)新添加的array_key_last()方法。
尽管end()似乎是最简单的,但它并不是最快的。更快、更强大的替代方法是array_slice():
$lastKey = key(array_slice($array, -1, 1, true));
正如测试所示,在一个包含500000个元素的数组上,它几乎快了7倍!