如何获得数组的最后一个键?
当前回答
$array = array(
'something' => array(1,2,3),
'somethingelse' => array(1,2,3,4)
);
$last_value = end($array);
$last_key = key($array); // 'somethingelse'
这是因为PHP在内部移动$array的数组指针
其他回答
尝试使用array_pop和array_keys函数,如下所示:
<?php
$array = array(
'one' => 1,
'two' => 2,
'three' => 3
);
echo array_pop(array_keys($array)); // prints three
?>
从PHP7.3开始,您可以使用array_key_last()直接访问数组(外层)中的最后一个键。
这无疑让本页的许多争论告一段落。毫无疑问,它是性能最好的,没有副作用,而且是一种直接、直观、单次调用的技术,可以准确地满足这个问题的要求。
一个粗略的基准测试作为证明:https://3v4l.org/hO1Yf
Array_slice () + key(): 1.4 End () + key(): 13.7 .使用实例 array_key_last (): 0.00015 *测试数组包含500000个元素,微时间重复100x,然后平均,然后乘以1000,以避免科学符号。感谢@MAChitgarha在@TadejMagajna的回答下评论了最初的基准。
这意味着你可以检索最终键的值,而不需要:
移动数组指针(这需要两行代码)或 排序、反转、弹出、计数、索引键数组或任何其他愚蠢的操作
这个函数早就应该出现了,它是数组函数工具带中的一个受欢迎的新成员,可以提高性能,避免不必要的副作用,并实现干净/直接/直观的代码。
下面是一个演示:
$array = ["a" => "one", "b" => "two", "c" => "three"];
if (!function_exists('array_key_last')) {
echo "please upgrade to php7.3";
} else {
echo "First Key: " , key($array) , "\n";
echo "Last Key: " , array_key_last($array) , "\n";
next($array); // move array pointer to second element
echo "Second Key: " , key($array) , "\n";
echo "Still Last Key: " , array_key_last($array);
}
输出:
First Key: a
Last Key: c // <-- unaffected by the pointer position, NICE!
Second Key: b
Last Key: c // <-- unaffected by the pointer position, NICE!
一些注意事项:
Array_key_last()是array_key_first()的兄弟函数。 这两个函数都是“指针无知的”。 如果数组为空,这两个函数都返回null。 被丢弃的兄弟函数(array_value_first()和array_value_last())也提供了对书尾元素的指针无知访问,但它们显然没有获得足够的选票来实现。
以下是一些讨论新功能的相关页面:
https://laravel-news.com/outer-array-functions-php-7-3 https://kinsta.com/blog/php-7-3/#array-key-first-last https://wiki.php.net/rfc/array_key_first_last
附注:如果有人正在权衡其他一些技术,你可以参考这个小的比较集:(演示)
array_slice() + key()的持续时间:0.35353660583496 end() + key()的持续时间:6.7495584487915 array_key_last()的持续时间:0.00025749206542969 array_keys() + end()的持续时间:7.6123380661011 array_reverse() + key()的持续时间:6.7875385284424 array_slice() + foreach()的持续时间:0.28870105743408
用array_reverse()试试这个。
$arr = array(
'first' => 01,
'second' => 10,
'third' => 20,
);
$key = key(array_reverse($arr));
var_dump($key);
你可以用这个:
$array = array("one" => "apple", "two" => "orange", "three" => "pear");
end($array);
echo key($array);
另一个解决方案是创建一个函数并使用它:
function endKey($array){
end($array);
return key($array);
}
$array = array("one" => "apple", "two" => "orange", "three" => "pear");
echo endKey($array);
在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()组合,则必须重置数组,使指针位于开头。
推荐文章
- 如何创建数组列表的数组?
- 将字符串数组转换为字符串
- 如何找到JavaScript数组中包含的最大数字?
- 使用PHP加密和解密密码的最佳方法是什么?
- 如何实现一个好的脏话过滤器?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 移动一个文件到服务器上的另一个文件夹
- 如何读一个文本文件到一个列表或数组与Python
- Laravel中使用雄辩的ORM进行批量插入
- PHP 5.4调用时引用传递-容易修复可用吗?
- 如何在Python中将十六进制字符串转换为字节?
- 格式化字节到千字节,兆字节,千兆字节
- 如何在PHP中获得变量名作为字符串?
- 与push()相反;