首页 > 技术文章 > PHP函数参数传递(相对于C++的值传递和引用传递)

BTMaster 2014-02-02 22:29 原文

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

推荐阅读