PHP-php值传递的问题,两个例子搞不懂了
//第一段
<?php
$arr=array(2,1,1);
function findMin($arr){
$min=$arr[0];
$re=array();
for($i=0;$i<count($arr);$i++){
if($min>$arr[$i]){
$re[]=$i;
}
}
return $re;
}
$re=findMin($arr);
echo $re[0];
echo $re[1];
//第二段
function main() {
$cc = array(
'a','b'
);
change($cc);
var_dump($cc);
die;
}
function change($cc){
$cc = array('dd');
}
main();
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个涉及到php的变量传值分为 按值传递 和 按引用传递
php变量的
php变量的值是存放在一个叫zval的容器中(一个内存堆块中)
按值传递
$a=1;
$b=$a;
$b=2; //$b创建了与$a不同的zval容器(即copy on write),$b的zval容器放的是2. $a的容器放的是1.
按引用传递
$a=1;
$b=&$a;//$b和$a使用了指向了相同的zval容器.
$b=2;//$b将容器的值改变成2.(实际上是change on write).$a当然也是2了.
对于你的例子.你应该改为按引用传值,change才会改变$a;
$a = array(5);
change($a);
var_dump($a);
function change(&$arr){//按引用传参时,形参$arr与$a指向同一zval的容器
$arr = array('dd');//$arr对zval的更改会直接影响到$a
}
function change(&$arr){//按引用传参时,形参$arr与$a指向同一zval的容器
$b =2;
$arr = &$b;//$arr指向了$b的zval
$arr = array('dd');//$arr对zval的更改不会影响到$a.而会影响到$b
}
change传的是形参,又没return,何来的更改?