如何获得数组的最后一个键?
当前回答
一个解决方案是使用end和key的组合(引用):
End()将数组的内部指针前进到最后一个元素,并返回它的值。 Key()返回当前数组位置的索引元素。
因此,像这样的一部分代码应该可以做到:
$array = array(
'first' => 123,
'second' => 456,
'last' => 789,
);
end($array); // move the internal pointer to the end of the array
$key = key($array); // fetches the key of the element pointed to by the internal pointer
var_dump($key);
将输出:
string 'last' (length=4)
也就是数组最后一个元素的键值。
完成此操作后,数组的内部指针将位于数组的末尾。正如注释中所指出的,您可能希望在数组上运行reset()以将指针带回数组的开头。
其他回答
一个解决方案是使用end和key的组合(引用):
End()将数组的内部指针前进到最后一个元素,并返回它的值。 Key()返回当前数组位置的索引元素。
因此,像这样的一部分代码应该可以做到:
$array = array(
'first' => 123,
'second' => 456,
'last' => 789,
);
end($array); // move the internal pointer to the end of the array
$key = key($array); // fetches the key of the element pointed to by the internal pointer
var_dump($key);
将输出:
string 'last' (length=4)
也就是数组最后一个元素的键值。
完成此操作后,数组的内部指针将位于数组的末尾。正如注释中所指出的,您可能希望在数组上运行reset()以将指针带回数组的开头。
尝试使用array_pop和array_keys函数,如下所示:
<?php
$array = array(
'one' => 1,
'two' => 2,
'three' => 3
);
echo array_pop(array_keys($array)); // prints three
?>
尽管end()似乎是最简单的,但它并不是最快的。更快、更强大的替代方法是array_slice():
$lastKey = key(array_slice($array, -1, 1, true));
正如测试所示,在一个包含500000个元素的数组上,它几乎快了7倍!
我只是从Xander那里获得了帮助函数,并使用之前的答案改进了它:
function last($array){
$keys = array_keys($array);
return end($keys);
}
$arr = array("one" => "apple", "two" => "orange", "three" => "pear");
echo last($arr);
echo $arr(last($arr));
你可以用这个:
$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);
推荐文章
- 如何创建数组列表的数组?
- 将字符串数组转换为字符串
- 如何找到JavaScript数组中包含的最大数字?
- 使用PHP加密和解密密码的最佳方法是什么?
- 如何实现一个好的脏话过滤器?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 移动一个文件到服务器上的另一个文件夹
- 如何读一个文本文件到一个列表或数组与Python
- Laravel中使用雄辩的ORM进行批量插入
- PHP 5.4调用时引用传递-容易修复可用吗?
- 如何在Python中将十六进制字符串转换为字节?
- 格式化字节到千字节,兆字节,千兆字节
- 如何在PHP中获得变量名作为字符串?
- 与push()相反;