学语言学得比较多了,今天突然想PHP函数传递,对于简单类型(基本变量类型)和复杂类型(类)在函数参数传递时,有没有区别呢,今天测试了下:
代码如下:
1 <?php 2 3 function test($a, $b) 4 { 5 $a = 55; 6 $b = 66; 7 } 8 9 10 $c = 1; 11 $d = 2; 12 13 echo '$c $d传递前的值<br>'; 14 echo '$c = '.$c."<br>".'$d = '.$d."<br>"; 15 16 test($c, $d); 17 18 echo '$c $d传递后的值<br>'; 19 echo '$c = '.$c."<br>".'$d = '.$d."<br><br>"; 20 21 class A 22 { 23 var $tt; 24 } 25 26 function testaa($a) 27 { 28 $a->tt = 99; 29 echo '函数体里$a->tt的值<br>'; 30 echo $a->tt.'<br>'; 31 } 32 33 $aa = new A(); 34 $aa->tt = 77; 35 36 echo '$aa->tt传递前的值<br>'; 37 echo $aa->tt.'<br>'; 38 testaa($aa); 39 echo '$aa->tt传递后的值<br>'; 40 echo $aa->tt.'<br>';
输出结果:
$c $d传递前的值
$c = 1
$d = 2
$c $d传递后的值
$c = 1
$d = 2
$aa->tt传递前的值
77
函数体里$a->tt的值
99
$aa->tt传递后的值
99
结论:
对于简单的值传递,PHP跟C语言一样,都是函数体内无法改变实参的值,但是对象可以。