获取数组最后一个元素的引用

25

我可以使用以下代码来获取$array中最后一个项目的值。如何获取对该项目的引用?

$last_item = end($array);

$array 的元素是索引数组。


http://www.php.net/manual/en/function.end.php#24804 - Vasilen Donchev
3个回答

42
end($array);
$referenceToLastElement = &$array[key($array)];

很有趣。我想知道与被接受的答案中的方法相比,它是否会表现得更好。 - Emanuil Rusev
2
@EmanuilRusev:它的性能会更好,因为它可以在任何数组上正确地工作。 - Jon
这比count()方法更快吗? - Jānis Elmeris
1
count方法只能用于干净、连续编号、枚举数组... 速度差异(如果有的话)可能以纳秒为单位测量;但由于该方法中没有涉及算术运算,因此它可能是更高效的方法。 - Mark Baker
实际上,非连续编号的对象并不正确地被称为“数组”。它们是对象。在PHP中它们看起来很相似,但它们的表示方式不同,当它们通过AJAX发送时,这种表示方式是最重要的。 - NessBird

3

count()方法可以给你数组的长度,你可以对其进行简单的算术运算,以获取对数组的最后一个元素的引用。

$array = array(
  array('jkl' => '456'),
  array('abc' => '456'),
);
print_r($array);
$last_item = &$array[count($array) - 1];
$last_item['abc'] = '123';
print_r($array);

那正是我所期望的回答。 - Emanuil Rusev
10
只有当数组从0开始使用整数序列索引时,它才能正常工作——这是一个很大的“如果”。 - Jon
@Jon - 如果可能的话,一定要使用Mark的答案。实际上,我比起自己的答案更喜欢Mark的答案——它是一个更加优雅和灵活的解决方案。 - leepowers

-1
list($last_key,$last_value) = each(array_slice($array,-1,1,true));

第二次尝试?

$last_item = &$array[array_pop(array_keys($array))];

这将为您提供对数组最后一个元素的变量引用。


1
我不明白。我既不需要最后一个元素的键,也不需要它的值 - 只需要一个引用。 - Emanuil Rusev
我不确定你所说的“只是一个引用”的意思。我会再试一次。请查看编辑。 - Niet the Dark Absol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接