<?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;