应该使用array_push()在PHP中通过迭代方法构建数组吗?


Should array_push() be used for building an array through an iterative approach in PHP?

如果我想建立一个数组的数据对遵循像$n => myFunction($n)的模式,我想我想做这样的事情:

$myArray = array();
foreach ($n as $key) {
    $new_data = array($key => myFunction($key));
    array_push($myArray, $new_data);
}

然而,我听到开发人员批评array_push()函数,所以我想知道是否有更好的方法来解决这个问题。

这本身并不坏,但是PHP中的函数调用相对较慢,所以如果您在代码中避免使用array_push,您可能会注意到效果。就我个人而言,我总是使用[]符号,主要是因为我认为它更干净,但也更快。

$myArray[] = $new_data;

甚至array_push的文档也提到了这个替代方案,认为它更快:

注意:如果您使用array_push()添加一个元素到数组,最好使用$array[] =因为这样就没有调用函数的开销了。

但是array_push也有一个优点,你可以用它把多个元素压入一个数组:

array_push($myArray, 'value1', 'value2', 'value3');

所以它有它的用途,但是对于一次添加单个元素,就像您所做的那样,$myArray[] = ...的较短表示法更快。