118

在 PHP 手册中,(array_push)说..

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

例如 :

$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);

对比

$arr[] = "stackoverflow";
print_r($arr);

我不明白为什么会有很大的不同。

4

9 回答 9

155

当您在 PHP 中调用函数(例如array_push())时,调用会产生开销,因为 PHP 必须查找函数引用,找到它在内存中的位置并执行它定义的任何代码。

using$arr[] = 'some value';不需要函数调用,并且直接将添加实现到数据结构中。因此,当添加大量数据时,使用$arr[].

于 2013-01-09T10:13:34.390 回答
44

您可以使用 array_push 一次将 1 个以上的元素添加到数组中,

例如 array_push($array_name, $element1, $element2,...)

其中 $element1, $element2,... 是要添加到数组的元素。

但是如果您想一次只添加一个元素,那么应该首选其他方法(即使用 $array_name[])。

于 2013-01-09T10:24:02.397 回答
17

不同之处在于下一行“因为这样没有调用函数的开销”。

array_push()如果第一个参数不是数组,将引发警告。这与$var[]创建新数组的行为不同。

于 2013-01-09T10:15:55.850 回答
7

如果可能,您应该始终使用$array[],因为正如框所述,函数调用没有开销。因此它比函数调用快一点。

于 2013-01-09T10:13:15.873 回答
4

array_push — 将一个或多个元素压入数组末尾

记下“一个或多个元素到最后”的话,使用$arr[]你必须获得数组的最大大小

于 2013-01-09T10:20:10.003 回答
2

说明: 1.第一个在数组中声明变量。

2.第二个array_push方法用于推入数组变量中的字符串。

3.finally它会打印结果。

4.第二种方法是直接将字符串存入数组。

5.使用 print_r 方法将数据打印在数组值中。

这两个是一样的

于 2014-09-25T12:59:51.960 回答
1

两者都是相同的,但是 array_push 在它的参数中创建一个循环,该参数是一个数组并执行 $array[]=$element

于 2017-10-13T21:02:23.170 回答
0

我知道这是一个旧答案,但可能有助于其他人知道两者之间的另一个区别是,如果您必须在每个循环中向数组添加超过 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条件括号

于 2017-06-29T15:28:21.860 回答
-1

没有人说,但是 array_push 只将一个元素推送到数组的末尾,其中 $array[index] 可以在任何给定的索引处插入一个值。巨大差距。

于 2018-04-11T19:39:02.213 回答