首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP与array_pop?

PHP与array_pop?
EN

Stack Overflow用户
提问于 2013-07-30 12:39:19
回答 10查看 8.7K关注 0票数 10

如果要删除数组的最后一个元素,可以使用以下两种代码之一:

  1. array_pop($array); (不使用返回值)
  2. unset($array[count($array) -1]);

它们之间有什么性能或语义上的区别吗?

如果没有,哪一种为首选?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-07-30 12:42:07

如果您需要使用删除的值“做”任何事情(除非您以前将它分配给其他地方),那么unset是没有好处的,因为它不会返回任何东西,而array_pop会给出最后一个项。

您提供的unset选项可能性能稍差,因为您正在计算数组的长度并对其执行一些数学运算,但我认为,如果存在差异,则可以忽略不计。

正如其他人所说,如果数组是数字的,并且是连续的,那么上面的情况是正确的,但是如果数组不是这样构造的,那么事情就会变得复杂起来。

例如:

代码语言:javascript
复制
<?php
$pop = $unset = array(
  1 => "a",
  3 => "b",
  0 => "c"
);

array_pop($pop);

// array looks like this:
//  1 => "a", 3 => "b"

$count = count($unset) - 1;
unset($count);
// array looks like this because there is no item with index "2"
//  1 => "a", 3 => "b", 0 => "c"
票数 12
EN

Stack Overflow用户

发布于 2013-07-30 12:44:38

array_pop($array)移除$array的最后一个元素。

unset($array[count($array) -1]);移除索引count($array) -1处的元素。这个元素不一定是数组的最后一个元素。

考虑一下$array = array(0 => 'foo', 2 => 'bar', 1 => 'baz')。在本例中,$array[1]是最后一个元素。密码

代码语言:javascript
复制
foreach (array(0 => "foo", 2 => "bar", 1 => "baz") as $key => $value)
  echo "$key => $value\n";

版画

0 => foo 2 => bar 1 => baz

此外,索引count($array) -1中的元素甚至可能不存在。索引集合中可能存在空白,整数索引可以与字符串索引混合。

票数 10
EN

Stack Overflow用户

发布于 2013-07-30 12:42:23

返回值是不同的。array_pop返回最后一个元素,而unset不返回任何内容。

简单地删除最后一个元素,array_pop会更好,因为您不需要执行count($array)-1,而且它更干净、更易读。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17947270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档