PHP函数参数传递(相对于C++的值传递和引用传递)

学语言学得比较多了,今天突然想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语言一样,都是函数体内无法改变实参的值,但是对象可以。

你可能感兴趣的:(引用传递)