<?php
$a=90;
$b=90.8;
$c=true;
$d="hello";
function rec($a,$b,$c,$d){
return $a=78;
$b=60.8;
$c=false;
$d="beijing";
}
echo rec($a,$b,$c,$d);
这样的结果是78
然后我变成这样<?php
$a=90;
$b=90.8;
$c=true;
$d="hello";
function rec($a,$b,$c,$d){
return $a=78;
$b=60.8;
$c=false;
$d="beijing";
}
rec($a,$b,$c,$d);
echo $a.$b.$c.$d;
结果就是 90 90.8 1 hello
我完全晕了,先看第一个我把$a=90带入到函数中,函数被重新赋值为90,然后rec()取得返回值90答案不应该是90吗。还有后面第二段代码,完全不懂结果为什么这样,有大神能详解吗!!!
$a=90;
$b=90.8;
$c=true;
$d="hello";
function rec($a,$b,$c,$d){
return $a=78;
$b=60.8;
$c=false;
$d="beijing";
}
echo rec($a,$b,$c,$d);
这样的结果是78
然后我变成这样<?php
$a=90;
$b=90.8;
$c=true;
$d="hello";
function rec($a,$b,$c,$d){
return $a=78;
$b=60.8;
$c=false;
$d="beijing";
}
rec($a,$b,$c,$d);
echo $a.$b.$c.$d;
结果就是 90 90.8 1 hello
我完全晕了,先看第一个我把$a=90带入到函数中,函数被重新赋值为90,然后rec()取得返回值90答案不应该是90吗。还有后面第二段代码,完全不懂结果为什么这样,有大神能详解吗!!!
return $a=78;
$b=60.8;
$c=false;
$d="beijing";
}
这个函数本身就有问题,return语句后面的语句是不会执行的,另外函数里的$a是局部变量,是不会影响外面定义的全局变量的,除非用&引用或者global
return $a=78;
$b=60.8;
$c=false;
$d="beijing";
}
echo rec($a,$b,$c,$d);
当然输出 78,因为你有 return $a=78;(对 $a 的赋值是费油意义的)rec($a,$b,$c,$d);
echo $a.$b.$c.$d;
你没有承接 rec($a,$b,$c,$d); 的返回值,自然只会输出变量的原有值
这也反正了在函数中的赋值,是不会影响到外面的
而且你这个与堆和栈都没有关系。$a = 1;function rec($a){
$a = 2;
return $a;
}echo $a;
rec($a);
echo $a;像这样$a都是1
$a = 1;
function rec($a){
$a = 2;
return $a;
}
echo $a;
rec($a);
echo $a;
这样$a都是1
与堆和栈没有关系