更新:この質問に対する私の当初の意図は、PHPが実際にこの機能を備えているかどうかを判断することでした。これは、スカラーの問題に焦点を当てた回答では失われています。代わりに、この新しい質問を参照してください:「PHPには自動活性化がありますか?」この質問は参考のためにここに残されています。
ウィキペディアによると、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には自動生存がありますか?Googleで「phpautovivification」を検索しても、正規の回答やその例は表示されません。