background image

<?php

    function foo (&$var) {

    $var++;

    }

    $a=5;

    foo ($a);

    ?>

 

将使 $a 

 

变成 6.

 

这是因为在 foo 

 

函数中变量 $var 

 

指向了和 $a 指向的同一个内容.

更多详细解释见引用传递.

引用做的第三件事是引用返回.
引用不是什么
如前所述,引用不是指针.这意味着下面的结构不会产生你预期的效果:
<?php

    function foo (&$var){

    $var =& $GLOBALS[“baz”];

    }

    foo($bar);

    ?>

 

这将使 foo 

 

函数中的 $var 

 

变量在函数调用时和 $bar 绑定在一起,但接着又被重新

 

绑定到了 $GLOBALS[“baz”] 上面.

 

不可能通过引用机制将 $bar 在函数调用范围内绑定

到别的变量上面,

 

因为在函数 foo 

 

中并没有变量 $bar(

 

它被表示为 $var,

 

但是 $var 只有

变量内容而没有调用符号表中的名字到值的绑定).

引用传递
你可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值.语法如下:
<?php

    function foo (&$var) {

    $var++;

    }

    $a=5;