php大神请进请教个问题

2024-12-05 00:42:52
推荐回答(3个)
回答1:

首先要知道“&”符号是什么意思

这个符号的意思在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

回答2:

第一个问题、 输出的这个是外部的$var4
第二个、因为函数内部输出的值得没有调用出来
三、 如果想要通过函数内部进行修改 function test2(){

global $var3,$var4; //把方法变量引入

$var4 = &$var3; echo $var3; return $var4; }
$var4 = $test2();
方法返回值 $var4 为 1

回答3:

全局变量和局部变量