PHP - 优雅(快速)方式访问从数组末尾开始计数的元素?

时间:2011-08-02 00:21:15

标签: php arrays indexing

我有一个数组,我想抓住“负三”元素,无论数组长度如何。 (如果这没有意义,请发表评论,我会澄清)。

显而易见的方法是$arr[count($arr)-4],但这感觉很笨拙。

有一种快速,优雅的方法吗?

更新

仍在摆弄,对此有何想法?

array_slice($arr,-4,-3); 

5 个答案:

答案 0 :(得分:4)

是的,有:

尝试这样的事情:

$newArray = array_slice($array, -3);

答案 1 :(得分:4)

显而易见的方法是在常量时间内返回所需的单个值,假设您有数字索引。数组大小已经为PHP所知,它只是跳转到您想要的偏移量并为您提供结果。

array_slice做了很多次工作,将数组大小与偏移量进行比较,计算循环条件,创建一个新数组来存储切片,循环遍历现有数组的部分,将值复制到新数组,然后将该数组返回给你。

http://lxr.php.net/opengrok/xref/PHP_TRUNK/ext/standard/array.c

答案 2 :(得分:1)

您可以使用$last = end($arr);,然后两次使用prev($arr);来获取其他2个元素。

哦,如果你没有至少3个元素,请检查它们是否返回FALSE。

答案 3 :(得分:1)

array_slice()

array_slice($a, -3)

答案 4 :(得分:1)

尝试array_slice()函数,将负偏移量作为第二个参数。