关于php按值传递和按引用传递问题
首先让我们来看一段代码:
01 | <!--?php |
02 | $a = 111; |
03 | $b = 222; |
04 | function cz(& $a , $b ){ |
05 | $a += $b ; |
06 | $b += 4; |
07 | } |
08 | cz( $a , $b ); |
09 | echo '$a=' . $a . '</br---->' ; |
10 | echo '$b=' . $b ; |
11 | ?> |
这段代码,首先在函数cz外定义了两个变量$a和$b,然后在函数cz内,对两个变量进行了相应的操作,再调用函数cz,最后将$a和$b输入。我们都知道函数的作用域问题,在函数内部修改的值,只能在函数内部反应出来,在函数外是不能得不到这种变化的。现在我们看下这个这段代码输出的结果:
1 | $a =333; |
2 | $b =222; |
$b的值和预期的相同,输出的是222,但是$a的值却发生了变化,这是因为在函数的参数前多了一个“&”的原因,正是因为这个符号,所以让$a能够得到在函数cz内的变化,所以$a的值才会发生改变。
所以按值传递和按引用传递的区别就在这里了,如果想将一个变量在函数内修改的值作用到函数外的变量上时,只需要在相应的参数前面加上“&”就可以了。
原址:http://www.pmsun.net/web/15.html