在PHP中添加数组元素,使用哪种方法更好?
$array[] = $value;
或者array_push($array, $value);
尽管手册上建议避免函数调用,但我也读到过 $array[]
比 array_push()
慢得多。有哪些澄清或基准测试?
在PHP中添加数组元素,使用哪种方法更好?
$array[] = $value;
或者array_push($array, $value);
尽管手册上建议避免函数调用,但我也读到过 $array[]
比 array_push()
慢得多。有哪些澄清或基准测试?
$array[]
更加清晰易读,而且如果你不打算向数组中添加成千上万个字符串,那么毫秒级别的区别其实并不重要。$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
$array[] = $i;
}
print microtime(true) - $t;
print '<br>';
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
array_push($array, $i);
}
print microtime(true) - $t;
使用$array[]
的第一种方法比第二种方法快近50%。
Run 1
0.0054171085357666 // array_push
0.0028800964355469 // array[]
Run 2
0.0054559707641602 // array_push
0.002892017364502 // array[]
Run 3
0.0055501461029053 // array_push
0.0028610229492188 // array[]
从措辞上看,如果添加多个值,使用如果您使用array_push()向数组添加一个元素,最好使用$array[] =,因为这样就没有调用函数的开销。
array_push
可能更有效率。出于好奇,我进行了进一步测试,即使对于大量添加,逐个使用$array[]
调用比使用一个大的array_push
更快。有趣。$array[]
确实比较快,只需要300毫秒,而不是2000毫秒。然而,使用 array_push
一次性添加20个元素的速度几乎与使用20个 $array[] =
相同。 - Ellearray_push() 的主要作用是可以将多个值添加到数组的末尾。
根据文档所述:
如果您使用 array_push() 添加一个元素到数组中,最好使用 $array[] = 的方式,因为这样不需要调用函数,没有额外的开销。
街上的传言是[]比较快,因为没有函数调用的开销。而且,没人真的喜欢PHP的数组函数...
"是... 针筒,还是 针筒针...啊,见鬼了...[] = "
一个不同之处是您可以使用多于两个参数调用array_push(),即您可以一次向数组推送多个元素。
$myArray = array();
array_push($myArray, 1,2,3,4);
echo join(',', $myArray);
打印输出 1,2,3,4
由于"array_push"是一个函数,并且在循环内部调用多次,因此它会将内存分配到堆栈中。
但是当我们使用 $array[] = $value 时,我们只是将一个值赋给了数组。
第二个是函数调用,因此通常比使用核心数组访问功能要慢。但我认为即使在脚本中进行一次数据库查询,也会比1000000次对array_push()
的调用更重要。
请参见这里,进行1000000次插入的快速基准测试:https://3v4l.org/sekeV
int array_push(...)
返回数组中新元素的数量(PHP documentation)。这比$myArray[] = ...; $total = count($myArray);
更加有用和紧凑。
此外,当变量用作堆栈时,array_push(...)
是有意义的。