在某些其他语言(例如,AS3)中,应注意的是,如果这样做,初始化新数组会更快,var foo = []而不是var foo = new Array()出于对象创建和实例化的原因。我想知道PHP中是否有任何等效项?
class Foo { private $arr = array(); // is there another / better way? }
在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语法)的支持)的实现影响的。 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。