mat*_*pie 12 php arrays initialization
我总是通过填充它们来创建数组
$foo[] = 'car';
Run Code Online (Sandbox Code Playgroud)
但我见过很多
$foo = array();
$foo[] = 'car';
Run Code Online (Sandbox Code Playgroud)
和
$foo = new array();
Run Code Online (Sandbox Code Playgroud)
不初始化,使用array()和使用new array()之间有什么区别;?
谢谢!
bco*_*sca 21
您不使用以下方法在PHP中实例化数组:
$foo=new array(); // error in PHP
Run Code Online (Sandbox Code Playgroud)
这是为Javascript:
foo=new Array(); // no error in Javascript
Run Code Online (Sandbox Code Playgroud)
在PHP中,new
仅用于实例化对象.
JAL*_*JAL 10
区别在于使用new
不起作用,因为它array()
是一种语言结构而不是一个对象构造函数.它抛出一个错误:
Parse error: syntax error, unexpected T_ARRAY in php shell code on line 1
Run Code Online (Sandbox Code Playgroud)
另一方面,声明它
$f=array();
Run Code Online (Sandbox Code Playgroud)
在开始分配项目之前是一个很好的做法.严格的错误报告模式可能会发出有关使用未声明变量的警告.
您可以使用new
关键字在PHP中实例化一个数组,但它比使用该array()
函数创建的数组稍微庞大,并且不使用相同的调用.
new ArrayObject();
Run Code Online (Sandbox Code Playgroud)
将数组实例化为对象.更重要的是,这是一个可扩展的类,如果你想在面向对象的PHP中使用一个对象的数组语法.在大多数情况下,建议只使用array()
速度和简单性.
编辑:我想我从未真正回答过这个问题.
$var = array();
$var[] = 'car';
Run Code Online (Sandbox Code Playgroud)
将创建一个新的空数组,然后将'car'追加到数组中.初始化任何和所有数组都是很好的形式.将这两行写成一条会更好:$var = array('car');
$var[] = 'car';
Run Code Online (Sandbox Code Playgroud)
如果$var
不是数组或为空,将在其中创建一个带有'car'的新数组.如果$var
恰好已经声明为数组,您可能会发现您不小心保留了一些较旧的值(这就是初始化数组的好方法).
$var = new ArrayObject();
$var[] = 'car';
Run Code Online (Sandbox Code Playgroud)
是声明数组的OOP方式.这需要更多的资源,所以array()
除非你有充分的理由使用它ArrayObject
注意:
增加未初始化的数字变量要比递增初始化的数字变量($i++
慢于$i = 0; $i++
)慢得多.这不是php中的数组的情况:( $var[] = 'car'
大致相同$var = array(); $var[] = 'car'
)