我有下面的代码。我想改变$ b以再次使用它的值。如果我这样做,它也会改变$ a。如何在先前将它分配为$ a的引用之后再次将值赋给$ b?PHP从变量中删除“引用”。
$a = 1;
$b = &$a;
// later
$b = null;
我有下面的代码。我想改变$ b以再次使用它的值。如果我这样做,它也会改变$ a。如何在先前将它分配为$ a的引用之后再次将值赋给$ b?PHP从变量中删除“引用”。
$a = 1;
$b = &$a;
// later
$b = null;
见解释直列
$a = 1;
$b = &$a;
现在$ b和$ a只有2个不同的名字而变成相同的变量
unset($b);
$ b的名字已经消失,从上下文中消失但$ a仍然可用
$b = 2;
现在$ b就像新变量一样具有新值。开始新的生活。
$a = 1;
$b = &$a;
unset($b);
// later
$b = null;
首先:创建从$a
到$b
参考创建(对于缺乏一个更好的词)这两个变量之间的连接,所以$a
改变时$b
变化正是它的方式意味着工作。
因此,假设你想打破参考,IST最简单的方法
unset($b);
$b="new value";
通过@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
很好的例子,这可能是多么棘手。 – dmikam 2015-08-04 14:37:07