PHP删除";参考资料;从一个变量。

PHP删除";参考资料;从一个变量。,php,variables,reference,Php,Variables,Reference,我有下面的代码。我想将$b更改为与值一起再次使用。如果我这样做,它也会改变$a。在先前将某个值指定为$a的引用之后,如何再次将该值指定给$b $a = 1; $b = &$a; // later $b = null; 首先:创建从$a到$b的引用会在两个变量之间创建一个连接(因为没有更好的词),因此$a在$b更改时更改正是它的工作方式 因此,假设您想要打破引用,最简单的方法是 unset($b); $b="new value"; @xdazz的答案是正确的,但只需添加以下来自的优秀

我有下面的代码。我想将$b更改为与值一起再次使用。如果我这样做,它也会改变$a。在先前将某个值指定为$a的引用之后,如何再次将该值指定给$b

$a = 1;
$b = &$a;

// later
$b = null;

首先:创建从
$a
$b
的引用会在两个变量之间创建一个连接(因为没有更好的词),因此
$a
$b
更改时更改正是它的工作方式

因此,假设您想要打破引用,最简单的方法是

unset($b);
$b="new value";

@xdazz的答案是正确的,但只需添加以下来自的优秀示例,就可以深入了解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();
?>
请参阅内联解释

$a=1;//初始化它
$b=&$a;//现在$b和$a变成了同一个变量,只有两个不同的名称
未结算($b);//$b名称已消失,从上下文中消失,但$a仍然可用
$b=2;//现在$b就像一个具有新值的新变量。开始新的生活。

这个答案缺少教育意义上的解释。
<?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