我有以下代码。我想更改$ b以再次使用值。如果我这样做,它也会改变$ a。如何在先前将值指定为$ a?
之后再将值分配给$ b$a = 1;
$b = &$a;
// later
$b = null;
答案 0 :(得分:13)
见内联说明
$a = 1; // Initialize it
$b = &$a; // Now $b and $a becomes same variable with just 2 different names
unset($b); // $b name is gone, vanished from the context But $a is still available
$b = 2; // Now $b is just like a new variable with a new value. Starting new life.
答案 1 :(得分:7)
$a = 1;
$b = &$a;
unset($b);
// later
$b = null;
答案 2 :(得分:5)
@xdazz的答案是正确的,但只是添加了PHP Manual中的以下优秀示例,它可以深入了解PHP在幕后所做的工作。
在此示例中,您可以看到函数foo()中的$bar
是对函数作用域变量的静态引用。
取消设置$bar
会删除引用,但不会释放内存:
<?php
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar\n";
}
foo();
foo();
foo();
?>
以上示例将输出:
Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23
答案 3 :(得分:3)
首先:创建从$a
到$b
的引用会在两个变量之间创建一个连接(缺少更好的词),因此$a
会在{{1}时发生变化改变正是它的工作方式。
所以,假设你想打破引用,最简单的方法是
$b