PHP有自动修复吗?

Oll*_*ass 17 php perl autovivification

搜索PHP.net进行自动更新无法获得任何结果.在撰写本文时,维基百科声称只有Perl拥有它.在Google搜索"php autovivification" 时,没有明确的确定结果.

这个PHP代码运行正常:

$test['a'][4][6]['b'] = "hello world";
var_dump($test);

array
  'a' => 
    array
      4 => 
        array
          'b' => 
            array
              ...
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供PHP确实具有此功能的规范答案(最好使用引用),以及任何细节,例如它引入的版本,怪癖,快捷方式等?

Kel*_*lly 11

是的,PHP确实具有autovivification(并且已经使用了很长时间),尽管它没有被该术语引用. PHP.net声明:

可以通过在其中显式设置值来修改现有数组.

这是通过为数组赋值,在括号中指定键来完成的.也可以省略该键,从而产生一对空括号([]).

$arr[key] = value;
$arr[] = value;
// key may be an integer or string
// value may be any value of any type
Run Code Online (Sandbox Code Playgroud)

如果$ arr尚不存在,它将被创建,因此这也是创建数组的另一种方法.

但是,文档说明如果您尝试访问未设置数组(或键)的值,它将返回错误:

尝试访问尚未定义的数组键与访问任何其他未定义的变量相同:将发出E_NOTICE级错误消息,结果将为NULL.

我已经找到了旧的PHP3手册,其中说明了这一点:

您还可以通过简单地向数组添加值来创建数组.

$a[] = "hello";
Run Code Online (Sandbox Code Playgroud)

  • 是的,我已将其追溯到PHP3.它被简单地称为"创建数组的替代方法". (2认同)