$var1 = 5;
$var2 = 10;
function foo(&$my_var)
{
global $var1;
$var1 += 2;
$var2 = 4;
$my_var += 3;
return $var2;
}
$my_var = 5;
echo foo($my_var) . "\n"; //4 传了$my_var的值到函数中(引用传值),但函数中返回到是return $var2;所以是4
echo $my_var . "\n"; //8 因为是引用传值,$my_var的值在上一步骤已经变成了8
echo $var1 . "\n"; //7 注意:此处函数已经被执行,$var1的值已经变成了7
echo $var2 . "\n"; //10 $var2虽然在内部声明了,但是只是局部变量,所以全局变量的值没有改变,还是10
$bar = 'foo';
$my_var = 10; //4 不管$my_var的值传进去的是几,函数的返回值都是$var2的值,所以是4
echo $bar($my_var) . "\n";