如果要删除数组的最后一个元素,可以使用以下两种代码之一:
array_pop($array); (不使用返回值)unset($array[count($array) -1]);它们之间有什么性能或语义上的区别吗?
如果没有,哪一种为首选?
发布于 2013-07-30 12:42:07
如果您需要使用删除的值“做”任何事情(除非您以前将它分配给其他地方),那么unset是没有好处的,因为它不会返回任何东西,而array_pop会给出最后一个项。
您提供的unset选项可能性能稍差,因为您正在计算数组的长度并对其执行一些数学运算,但我认为,如果存在差异,则可以忽略不计。
正如其他人所说,如果数组是数字的,并且是连续的,那么上面的情况是正确的,但是如果数组不是这样构造的,那么事情就会变得复杂起来。
例如:
<?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"发布于 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]是最后一个元素。密码
foreach (array(0 => "foo", 2 => "bar", 1 => "baz") as $key => $value)
echo "$key => $value\n";版画
0 => foo 2 => bar 1 => baz
此外,索引count($array) -1中的元素甚至可能不存在。索引集合中可能存在空白,整数索引可以与字符串索引混合。
发布于 2013-07-30 12:42:23
返回值是不同的。array_pop返回最后一个元素,而unset不返回任何内容。
简单地删除最后一个元素,array_pop会更好,因为您不需要执行count($array)-1,而且它更干净、更易读。
https://stackoverflow.com/questions/17947270
复制相似问题