![](/img/trans.png)
[英]What's the difference between initializing arrays in the constructor or in the declaration in PHP?
[英]PHP: What's the difference between initializing an array with “new” vs without it?
我总是通过填充它们来创建数组
$foo[] = 'car';
但我见过很多
$foo = array();
$foo[] = 'car';
和
$foo = new array();
不初始化,使用array()和使用new array()之间有什么区别;?
谢谢!
您不使用以下方法在PHP中实例化数组:
$foo=new array(); // error in PHP
这是为Javascript:
foo=new Array(); // no error in Javascript
在PHP中, new
仅用于实例化对象。
不同之处在于使用new
不起作用,因为array()
是语言构造而不是对象构造函数。 它抛出一个错误:
Parse error: syntax error, unexpected T_ARRAY in php shell code on line 1
另一方面,声明它
$f=array();
在开始分配项目之前是一个很好的做法。 严格的错误报告模式可能会发出有关使用未声明变量的警告。
您可以使用new
关键字在PHP中实例化一个数组,但它比使用array()
函数创建的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'
大致相同$var = array(); $var[] = 'car'
)
foo = new Array();
是javascript语法。
最好在适用时预先初始化数组,这样您就不会意外地将数据填充到代码中其他位置定义的相同名称的现有数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.