首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP有自动生动的功能吗?

PHP有自动生动的功能吗?
EN

Stack Overflow用户
提问于 2011-05-11 20:41:51
回答 2查看 700关注 0票数 18

PHP.net上搜索自动生动没有得到任何结果。在撰写本文时,Wikipedia声称只有Perl拥有它。在Google中搜索"php autovivification“没有明确的结果。

这段PHP代码运行良好:

代码语言:javascript
复制
$test['a'][4][6]['b'] = "hello world";
var_dump($test);

array
  'a' => 
    array
      4 => 
        array
          'b' => 
            array
              ...

有没有人能提供一个规范的答案(最好有参考资料),说明PHP确实有这个功能,以及引入它的版本、怪癖、快捷方式等细节?

EN

回答 2

Stack Overflow用户

发布于 2011-05-11 21:21:25

嗯,不是100%,如果PHP支持自动生动,但你发布的语法在大部分情况下是有效的。

代码语言:javascript
复制
// Works as you have assigned a value of 'hello'
$a['a'][4][6]['b'] = "hello";
var_dump($a);
echo print_r($a,true);

// works as you have assigned a value of 'world'
$b[][][][] = "world";
var_dump($b);
echo print_r($b,true);

// ERROR: Cannot use [] for reading
$c[];
var_dump($c);
echo print_r($c,true);

无法使用[]读取:Related Link

票数 3
EN

Stack Overflow用户

发布于 2011-10-26 09:40:26

在perl中,项在检查时会自动激活,不需要赋值。到达最里面的请求密钥所需的项的路径将在检查时创建。请注意,{d => undef} is条目并不是实际创建的,而是隐含的。

代码语言:javascript
复制
   use strict;
   use warnings;
   use Data::Dumper;

   my %a;       # as is empty, equivalent to \%a is {};
   print Dumper %a;
   $a{b}{c}{d}; # \%a is now { b => { c => {}}}
                # returns an undef value.
   print Dumper \%a;

输出:

代码语言:javascript
复制
$VAR1 = {};
$VAR1 = {
          'b' => {
                   'c' => {}
                 }
        };

perl数组示例:

代码语言:javascript
复制
use strict;
use warnings;
use Data::Dumper;

my (@b,@c);          # @b=(), @c=()
print Dumper \@b;
$b[3];               # @b=() aka unchanged.
print Dumper \@b;
$b[3][2][1];         # @b=(undef,undef,undef,[undef,undef,[]])
print Dumper \@b;
print Dumper \@c;
$c[3]=1  ;           # @c=(undef,undef,undef,1)
print Dumper \@c;

输出:

代码语言:javascript
复制
Useless use of array element in void context at -e line 7.
Useless use of array element in void context at -e line 9.
$VAR1 = [];
$VAR1 = [];
$VAR1 = [
          undef,
          undef,
          undef,
          [
            undef,
            undef,
            []
          ]
        ];
$VAR1 = [];
$VAR1 = [
          undef,
          undef,
          undef,
          1
        ];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5964420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档