如果我复制一个引用变量,新变量是指针还是持有原来指针所指变量的值?
如果我复制一个引用变量,新变量是指针还是持有原来指针所指变量的值?
让我们来进行一个快速测试:
<?php
$base = 'hello';
$ref =& $base;
$copy = $ref;
$copy = 'world';
echo $base;
输出结果是 hello
,因此$copy
不是指向%base
的引用。
$copy = $ref;
。现在我明白了,这就像是一个取消引用并复制引用所指向的数据。我认为使用C指针会让这变得混乱,因为你必须手动取消引用。 - Lightbulb1它保存了值。如果你想要指向另一个引用,请使用&
运算符复制另一个引用:
$a = 'test';
$b = &$a;
$c = &$b;
让我举个例子来把这个问题解释清楚:
$a = array (1,2,3,4);
foreach ($a as &$v) {
}
print_r($a);
foreach ($a as $v) {
echo $v.PHP_EOL;
}
print_r($a);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
1
2
3
3
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 3
)
foreach ($anything as &$v) {}
之后,变量 $v
将持有最后一个数组元素的引用(虽然这很令人困惑,但这是正确的行为),你应该要么 unset($v)
要么记住 $v
是一个引用。专业提示:使用 var_dump() 而不是 print_r(),它将显示数组中的 & 引用。 - Sanya_Zol