开发者社区> 问答> 正文

在PHP中初始化(空)数组的最佳方法

在某些其他语言(例如,AS3)中,应注意的是,如果这样做,初始化新数组会更快,var foo = []而不是var foo = new Array()出于对象创建和实例化的原因。我想知道PHP中是否有任何等效项?

class Foo { private $arr = array(); // is there another / better way? }

展开
收起
保持可爱mmm 2020-01-16 14:54:17 442 0
1 条回答
写回答
取消 提交回答
  • 在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

    2020-01-16 14:54:30
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载