在PHP手册中,(array_push)说..
如果使用array_push()将一个元素添加到数组中,则最好使用$ array [] =,因为这样可以节省调用函数的开销。
例如 :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
与
$arr[] = "stackoverflow";
print_r($arr);
我不明白为什么会有很大的不同。
在PHP手册中,(array_push)说..
如果使用array_push()将一个元素添加到数组中,则最好使用$ array [] =,因为这样可以节省调用函数的开销。
例如 :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
与
$arr[] = "stackoverflow";
print_r($arr);
我不明白为什么会有很大的不同。
Answers:
当您使用PHP调用函数(例如array_push()
)时,调用会产生开销,因为PHP必须查找函数引用,在内存中查找其位置并执行其定义的任何代码。
使用$arr[] = 'some value';
不需要函数调用,而是直接在数据结构中实现添加。因此,添加大量数据时,使用起来会更快,更节省资源$arr[]
。
$arr[] = value
速度更快?试图想象为什么编译器会以不同的方式对待代码。
您可以使用array_push在一个镜头中向数组添加1个以上的元素,
例如 array_push($array_name, $element1, $element2,...)
其中$ element1,$ element2,...是要添加到数组中的元素。
但是,如果您想一次仅添加一个元素,则应首选其他方法(即使用$ array_name [])。
$array[]
如果可能的话,应始终使用,因为如方框所示,该函数调用没有开销。因此,它比函数调用快一点。
array_push —将一个或多个元素推到数组的末尾
注意单词“ 末尾有一个或多个元素 ”,要使用$arr[]
该数组,必须获得数组的最大大小
$arr[...index...] = $value;
此处讨论的内容感到困惑$arr[] = $value;
。不需要知道大小或数组就可以推到最后。多个元素将只是多个调用: $arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
说明:1.第一个在数组中声明变量。
2.第二个array_push方法用于将字符串推送到array变量中。
3.最终它将打印结果。
4.第二种方法是直接将字符串存储在数组中。
5.使用print_r方法将数据打印到数组值中。
这两个是一样的
我知道这是一个古老的答案,但是对其他人来说,这两者之间的另一个区别可能是有用的,如果每个循环必须向数组中添加超过2/3的值,则使用起来会更快:
for($i = 0; $i < 10; $i++){
array_push($arr, $i, $i*2, $i*3, $i*4, ...)
}
代替:
for($i = 0; $i < 10; $i++){
$arr[] = $i;
$arr[] = $i*2;
$arr[] = $i*3;
$arr[] = $i*4;
...
}
编辑-忘记关闭for
条件括号
for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }
。我推测array_push仍然比那快。
没有人说,但是array_push只将元素推到数组的末尾,其中$ array [index]可以在任何给定的索引处插入一个值。巨大差距。
$array[index] =
,这是一个不同的操作比$array[] = ...
。该问题给出了两段代码,并询问为什么它们之间会有显着的[性能]差异。这个问题的字面意思是$array[] = ...
,它是一个特定的php惯用语,不涉及索引。数组+索引解决了一个不同的问题,产生了不同的代码,并且权衡取舍。