下面是手册里的原文:复杂数组最好拷贝而不是引用。下面的例子不会如期望中那样工作。<?php
$top = array(
'A' => array(),
'B' => array(
'B_b' => array(),
),
);$top['A']['parent'] = &$top;
$top['B']['parent'] = &$top;
$top['B']['B_b']['data'] = 'test';
print_r($top['A']['parent']['B']['B_b']); // array()
?>
我输出的结果为:Array ( [data] => test ) ,这不就是预期的吗?
$top['A']['parent']为$top变量的引用,($top['A']['parent'] = &$top;)
它下边的['B']['B_b'],
不就是由$top['B']['B_b']['data'] = 'test';定义的[data] => test吗?
怎么会不如预期那样工作呢?预期怎么样工作呢?
$top = array(
'A' => array(),
'B' => array(
'B_b' => array(),
),
);$top['A']['parent'] = &$top;
$top['B']['parent'] = &$top;
$top['B']['B_b']['data'] = 'test';
print_r($top['A']['parent']['B']['B_b']); // array()
?>
我输出的结果为:Array ( [data] => test ) ,这不就是预期的吗?
$top['A']['parent']为$top变量的引用,($top['A']['parent'] = &$top;)
它下边的['B']['B_b'],
不就是由$top['B']['B_b']['data'] = 'test';定义的[data] => test吗?
怎么会不如预期那样工作呢?预期怎么样工作呢?
没找到这段啊这里是用的另外一个例子
http://www.php.net/manual/zh/language.references.arent.php
$top = array(
'A' => array(),
'B' => array(
'B_b' => array(),
),
); $top['A']['parent'] = &$top;
echo '<pre>';
print_r($top['A']['parent']);
echo '</pre>';
echo '<pre>';
$top['B']['parent'] = &$top;
echo '</pre>';
echo '<pre>';
print_r($top['B']['parent']);
echo '</pre>';
echo '<pre>';
$top['B']['B_b']['data'] = 'test';
print_r($top['B']['B_b']);
echo '</pre>';
echo '<pre>';
print_r($top['A']['parent']['B']['B_b']); // array()
echo '</pre>';
echo '<pre>';
运行结果如下:
Array
(
[A] => Array
(
[parent] => Array
(
[A] => Array
*RECURSION*
[B] => Array
(
[B_b] => Array
(
) ) ) ) [B] => Array
(
[B_b] => Array
(
) ))
Array
(
[A] => Array
(
[parent] => Array
(
[A] => Array
*RECURSION*
[B] => Array
(
[B_b] => Array
(
) [parent] => Array
*RECURSION*
) ) ) [B] => Array
(
[B_b] => Array
(
) [parent] => Array
(
[A] => Array
(
[parent] => Array
*RECURSION*
) [B] => Array
*RECURSION*
) ))Array
(
[data] => test
)Array
(
[data] => test
)
$top['A']['parent']['B']['B_b']的结果为:
Array
(
[data] => test
)