我发现下面代码中的引用令人困惑,
$a = 4;
$b = &$a;
var_dump($b);
$a = 10;
var_dump($b); // 10
$b = 100;
var_dump($a); // 100 but shouldn't it be 10?
的值$b
是对 的引用,$a
并且绝不$a
是对 的引用。$b
但是为什么当我改变$b
. 变化的价值$a
呢?
我发现下面代码中的引用令人困惑,
$a = 4;
$b = &$a;
var_dump($b);
$a = 10;
var_dump($b); // 10
$b = 100;
var_dump($a); // 100 but shouldn't it be 10?
的值$b
是对 的引用,$a
并且绝不$a
是对 的引用。$b
但是为什么当我改变$b
. 变化的价值$a
呢?
在该行中:$b = &$a;
该变量$b
被设置为对的引用$a
(因为它将指向与 相同的内存位置$b
)。在这方面$b
,本质上变成了别名或访问和修改的另一种方式$a
。
该链接解释了 C++ 中的指针(重要的是要强调这不是 C++,但该链接很好地解释了指针/引用)。
我希望这有帮助。
$b = &$a;
表示它们的值是相等的,如果你定义$b
然后$a
值变得等于$b
分别。