$array = array();
$array[ 'recursive' ] =& $array;
$array[ 'foo' ] = $array;
'foo'
被赋值给$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'
键是按值分配的呢?如何为值处理的事物创建中间变量改变行为?