如果在函数内部引用了变量,那么会发生什么

时间:2014-09-21 12:06:53

标签: php reference

function a(&$c, &$d){
    $c = &$d;
}

$a = 1;
$b = 2;

a($a, $b);
echo $a;

输出为1,但不应输出2,因为$ c引用$ d。 $ c和$引用相同的值,然后$ c引用$ d的值来引用$ b所以最终$ a应该引用$ b,这不正确吗?

2 个答案:

答案 0 :(得分:0)

对于您寻找的操作,您必须删除函数a中使用的&符号参考。

示例

function swap (&$one, &$two) {
    $tmp = $one; // One is stored temporarily
    $one = $two; // Two is stored in One
    $two = $tmp; // Temporary data retrieved and stored in two
    unset($tmp); // Temporary variable destroyed
}

// Set the variables
$a = 1;
$b = 2;

echo $a . " - " . $b . "<br />"; // See output as: 1 - 2
swap($a, $b);
echo $a . " - " . $b; // See output as: 2 - 1

答案 1 :(得分:0)

在行

  

$ c =&amp; $ d;

$ a是指$ b的地址但不是$ b的地址,那么你可以试试这个:

<?php 
    function foo(&$c, &$d){
        $c = $d;
    }

    $a = 1;
    $b = 2;

    foo($a, $b);
    echo $a;
?>