【问题标题】:Getting a reference to the last item of an array获取对数组最后一项的引用
【发布时间】:2012-01-26 21:42:25
【问题描述】:

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

$last_item = end($array);

$array 的项是索引数组。

【问题讨论】:

标签: php arrays


【解决方案1】:
end($array);
$referenceToLastElement = &$array[key($array)];

【讨论】:

  • 这很有趣。我想知道与已接受答案中的方法相比,它是否会表现得更好。
  • @EmanuilRusev:它会表现得更好,因为它可以在任何阵列上正常工作。
  • 这比 count() 方法快吗?
  • count 方法只适用于干净的、连续编号的枚举数组。速度差异(如果有)可能以纳秒为单位进行测量;但由于此方法不涉及算术运算,因此它可能是更高效的方法
  • 实际上,非连续编号的对象并不是正确的“数组”。它们是对象。它们在 PHP 中看起来很相似,但它们的表示方式不同,当它们通过 AJAX 发送时,哪种表示最重要。
【解决方案2】:

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);

【讨论】:

  • 这就是我希望得到的答案。
  • 这仅在数组使用从 0 开始的完整整数序列索引时才有效 - 一个大的“如果”。
  • @Jon - 如果有可能,一定要使用马克的答案。实际上,我比我自己更喜欢 Mark 的答案——它是更优雅、更灵活的解决方案。
【解决方案3】:
list($last_key,$last_value) = each(array_slice($array,-1,1,true));

尝试第 2 次?

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

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

【讨论】:

  • 我不明白。我既不需要最后一个元素的键,也不需要它的值——只是一个参考。
  • 我不确定我理解你所说的“只是一个参考”是什么意思。我会再试一次。查看编辑。
猜你喜欢
  • 2017-09-29
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多