PHP自动化
更新:我对此问题的初衷是确定
PHP是否确实具有此功能.在答案中关注标量问题时,这已经失去了.请改为查看这个新问题:
“Does PHP have autovivification?”此问题留待此处查阅.
According to Wikipedia,PHP没有自动生成,但此代码有效: $test['a']['b'] = 1; $test['a']['c'] = 1; $test['b']['b'] = 1; $test['b']['c'] = 1; var_dump($test); 输出: array 'a' => array 'b' => int 1 'c' => int 1 'b' => array 'b' => int 1 'c' => int 1 我发现这段代码也有效: $test['a'][4] = 1; $test['b'][4]['f'] = 3; 但添加此行会引发警告(“警告:不能将标量值用作数组”) $test['a'][4]['f'] = 3; 这里发生了什么?当我在索引之后添加关联元素时,为什么会失败?这是’真正的’Perl式自动更新,还是其中的一些变体,还是其他什么? 编辑:哦,我现在看到标量的错误,哎呀!这些按预期工作: $test['a'][4]['a'] = 1; $test['a'][4]['b'] = 2; $test['a'][5]['c'] = 3; $test['a'][8]['d'] = 4; 那么,php确实有autovivification?在Google上搜索“php autovivification”并没有提出一个典型的答案或例子.
从
PHP manual上的方括号语法:
用你的例子: $test['a'][4] = 1; 由于$test和$test [‘a’]目前不存在;它们都是作为数组创建的. $test['b'][4]['f'] = 3; $test [‘b’]和$test [‘b’] [4]目前不存在;它们都是作为数组创建的. $test['a'][4]['f'] = 3; $test [‘a’] [4]确实存在,但它是一个整数(1).这是不能用作数组的“标量值”.您不能在数字值上使用方括号[]语法;它不会将现有值转换为数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |