2014-09-21 86 views
0
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,这不正确吗?如果函数内引用了一个变量,那么会发生什么

+0

不能交换功能的内部参考,并期望它在它之外得到体现。 – 2014-09-21 12:11:45

+0

所以在一个函数里面做一个引用是没用的 – 2014-09-21 13:24:48

+0

那么$ c现在指的是什么? – 2014-09-22 11:43:54

回答

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 
0

在管线

$ C = & $ d;

$一个指的是$ B的地址,而不是$ B,那么你可以试试这个:

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

    $a = 1; 
    $b = 2; 

    foo($a, $b); 
    echo $a; 
?> 
相关问题