【发布时间】:2014-03-18 00:19:03
【问题描述】:
我对 php 中的变量有一些我不理解的问题。
这是问题的简化代码示例。
//Create an initial array with an sub-array
$a = array();
$a['test'] = array(1,2);
//Create an reference to $a['test'] in $b
//Changing $b[0] should now change the value in $a['test'][0]
$b = &$a['test'];
$b[0] = 3;
//Create an copy of $a into $c
$c = $a;
//Change one value in $c, which is an copy of $a.
//This should NOT change the original value of $a as it is a copy.
$c['test'][1] = 5;
print_r($a);
print_r($b);
print_r($c);
这是输出:
Array
(
[test] => Array
(
[0] => 3
[1] => 5
)
)
Array
(
[0] => 3
[1] => 5
)
Array
(
[test] => Array
(
[0] => 3
[1] => 5
)
)
脚本创建一个带有子数组的数组,并在其中放入两个值。
然后将对子数组的引用放入 b 中,并以这种方式更改 a 中的值之一。
然后我将 a 复制到 c 中。
然后我改变一个 c 的值。
由于 c 是 a 的副本,我希望 c 上的更改不会影响 a。但输出却讲述了一个不同的故事。
谁能解释为什么当$c 只是$a 的副本时,更改变量$c 中的值会影响$a 中的值?为什么 $a 的值是 5?
【问题讨论】:
标签: php arrays variables reference