$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";