[PHP] $x['foo'] = $x と書くとややこしいことになる件

PHPで、 $x['foo'] = $x と書くと循環参照(?)になってしまうようです。
<?php
$x = array('a'=>1);
$x['foo'] = $x;

print_r($x);

##  結果  ##

Array
(
    [a] => 1
    [b] => 2
    [foo] => Array
 *RECURSION*
)
一時変数 $y をかませてやると、意図したとおりになりました。
<?php
$x = array('a'=>1, 'b'=>2);
$y = $x;
$x['foo'] = $y;

print_r($x);

##  結果  ##

Array
(
    [a] => 1
    [b] => 2
    [foo] => Array
        (
            [a] => 1
            [b] => 2
        )

)
不思議ですね!
もしかして常識?
カテゴリ:

人気記事