$array = array();
$array[ 'recursive' ] =& $array;
$array[ 'foo' ] = $array;
'foo'
PHP奇怪的行爲是由值分配給$array
,這應該複製$array
,這並沒有在當時'foo'
關鍵,所以我希望這種情況到現在爲止是這樣的:遞歸陣列
$array = array(
'recursive' => &$array,
'foo' => array(
'recursive' => &$array
),
)
但如果我現在做的事:
var_dump(isset($array[ 'foo' ][ 'foo' ][ 'foo' ]));
我得到:
bool(true)
我不明白這是爲什麼。
如果我創造的'foo'
分配一箇中間變量,比如:
$array = array();
$array[ 'recursive' ] =& $array;
$blah = $array;
$array[ 'foo' ] = $blah;
var_dump(isset($array[ 'foo' ][ 'foo' ][ 'foo' ]));
我得到:
bool(false)
我明白爲什麼'recursive'
關鍵將是無限深,因爲這是通過引用分配,但爲什麼'foo'
密鑰是按值賦值的?如何爲由值處理的事物創建中間變量變化行爲?
它可能與此有關:http://stackoverflow.com/questions/17528280/why-does-reference-assigning-an-arrays-element-modify-the-array/17528610#17528610,看看是否你可以弄明白。現在對我來說已經太遲了。 :) – deceze
我試圖想象代碼執行時符號表的樣子,根據您鏈接的答案,但我只能達到我期望的行爲,而不是我所看到的行爲。 – Jesse