PHP:使用“new”和没有它来初始化数组之间的区别是什么?

时间:2010-11-16 19:50:38

标签: php arrays initialization

我总是通过填充它们来创建数组

$foo[] = 'car';

但我看过很多

$foo = array();
$foo[] = 'car';

$foo = new array();

不初始化,使用array()和使用new array()之间有什么区别;?

谢谢!

4 个答案:

答案 0 :(得分:21)

您不使用以下方法在PHP中实例化数组:

$foo=new array(); // error in PHP

这适用于Javascript:

foo=new Array(); // no error in Javascript

在PHP中,new仅用于实例化对象。

答案 1 :(得分:10)

不同之处在于使用new不起作用,因为array()是语言构造而不是对象构造函数。它抛出一个错误:

Parse error: syntax error, unexpected T_ARRAY in php shell code on line 1

另一方面,宣称它像

$f=array();
在开始分配项目之前

是一个很好的做法。严格的错误报告模式可能会发出关于使用未声明变量的警告。

答案 2 :(得分:5)

您可以使用new关键字在PHP中实例化数组,但是它比使用array()函数创建的数组稍微庞大,并且不使用相同的调用。

new ArrayObject();

将数组实例化为对象。更重要的是,这是一个可扩展的类,如果你想在面向对象的PHP中使用一个对象的数组语法。在大多数情况下,建议使用array()来提高速度和简单性。

编辑:我想我从未真正回答过这个问题。

$var = array();
$var[] = 'car';

将创建一个新的空数组,然后将'car'追加到数组中。初始化任何和所有数组都是很好的形式。将这两行写成一行会更好:$var = array('car');

$var[] = 'car';
如果$var不是数组或为空,

将在其中创建一个包含'car'的新数组。如果$var碰巧已经被声明为数组,您可能会发现您不小心保留了一些较旧的值(这就是初始化数组的好方法)。

$var = new ArrayObject();
$var[] = 'car';

是声明数组的OOP方式。这需要更多的资源,所以坚持array(),除非你有充分的理由使用ArrayObject

注意:

增加未初始化的数值变量要比递增初始化的数值变量慢得多($i++慢于$i = 0; $i++)。 php中的数组不是这种情况:($var[] = 'car'$var = array(); $var[] = 'car'大致相同)

答案 3 :(得分:0)

foo = new Array();是javascript语法。

最好在适用时预先初始化数组,这样就不会意外地将数据填充到代码中其他位置定义的相同名称的现有数组中。