在ECMAScript实现中(例如,ActionScript或JavaScript),Array()
是构造函数,并且[]
是数组文字语法的一部分。两者都以完全不同的方式进行了优化和执行,字面语法不受调用函数的开销的困扰。
另一方面,PHP的语言构造可能看起来像函数,但没有被这样看待。即使使用支持[]
替代的PHP 5.4,开销也没有区别,因为就编译器/解析器而言,它们完全是同义词。
// Before 5.4, you could only write
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// As of PHP 5.4, the following is synonymous with the above
$array = [
"foo" => "bar",
"bar" => "foo",
];
如果需要支持旧版本的PHP,请使用以前的语法。对于可读性也有一个争论,但是,作为一个长期的JS开发人员,后者对我来说似乎很自然。实际上,[]
当我第一次学习PHP时,尝试使用初始化数组确实犯了一个错误。
最初,由于对核心开发人员的多数表决,对语言进行了更改,但由于以下原因,该更改被拒绝:
由于很少有核心开发人员投票反对,因此不接受此补丁。尽管如果您在核心开发人员和用户级投票之间采取累积的平均态度似乎表明情况恰恰相反,那么从长远来看,不支持或维护提交补丁程序是不负责任的。
但是,似乎对5.4的态度有所改变,这可能是受对流行数据库(如MongoDB(使用ECMAScript语法)的支持)的实现影响的。