首先要知道“&”符号是什么意思
这个符号的意思在php中是引用的意思。举个例子
$a = 3;
$b = &$a; // $b 引用了 $a,这个时候$b就相当于$a的同名变量,改变任意一个,值都会改变。但是实际上$a是有空间的,$b只是指向了$a;
然后再说你这个问题。
global 变量也是有生存周期的,也就是说就是在函数内部
$var3 = 1;
$var4 = 2;
function test2(){
global $var3,$var4; // 这里是声明了两个生命周期在函数内部,但是指向了外部同名变量的一个引用
$var4 = &$var3; // $var4这个局部变量重新赋值了引用,不在指向外部的$var4,反而和局部的$var3一同指向了外部的$var3;
// 如果在这里改变$var4的值,实际上就是在改变它所引用的变量的值。即在这里改变$var3 或者 $var4都是在改变外部的$var3
echo $var3;
echo $var4;
}
test2();
echo $var4; //2
第一个问题、 输出的这个是外部的$var4
第二个、因为函数内部输出的值得没有调用出来
三、 如果想要通过函数内部进行修改 function test2(){
global $var3,$var4; //把方法变量引入
$var4 = &$var3; echo $var3; return $var4; }
$var4 = $test2();
方法返回值 $var4 为 1
全局变量和局部变量