【问题标题】:Why 'Array()' and not 'new Array()' in PHP?为什么在 PHP 中使用 'Array()' 而不是 'new Array()'?
【发布时间】:2012-08-13 03:36:34
【问题描述】:

PHP 中的其他对象是使用new 限定符实例化的,例如new Date() 等。为什么在PHP 中实例化新数组时不提供new 限定符和Array()

$array = new Array(); //blows up
$array = Array();     //works as intended

$reflect = new ReflectionClass($this);   //works as intended
$reflect = ReflectionClass($this);       //blows up

【问题讨论】:

  • 可以使用Array()(使用大写)创建数组吗?手册上写着array()(使用小写)
  • @AzizAG PHP 对此不区分大小写。
  • @PauloFreitas aRrAy('makes','me','sad :(')
  • @PauloFreitas 它确实有效,我刚试过,印象深刻。
  • @AzizAG 我不确定“印象深刻”是否是正确的词......(也许是“惊讶”?)

标签: php arrays object


【解决方案1】:

Array 是一种语言结构而不是类,因此您不能使用 new 来实例化 Array 对象。

【讨论】:

    【解决方案2】:

    因为array 是语法,而不是类。与listecho 和其他一些相同。

    【讨论】:

      【解决方案3】:

      除非您创建“Array”类,否则它会“爆炸”,因为 PHP 没有内置的 Array 类。

      数组不是一个类,而是一个函数。

      出于同样的原因,你不能这样做

      $myvar = new print('hello');
      

      那太疯狂了,不是吗? print()array() 一样,是 PHP 内置的函数,而不是类。

      【讨论】:

      • 我的面向对象的大脑不会认为array() 是一个函数
      【解决方案4】:

      数组在 php 中甚至在面向对象的方式被引入之前就存在于 php 中

      将其视为 C 语言数组,仍然可以在 C++ 中使用 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-14
        • 2010-12-20
        • 1970-01-01
        • 2019-04-16
        • 1970-01-01
        • 2016-04-06
        • 1970-01-01
        • 2011-11-14
        相关资源
        最近更新 更多