文章教程

2.7.4PHP函数的传值与传址

9/17/2020 9:26:54 PM 人评论 次浏览

2.7.4 PHP函数的传值与传址

上小节讲述的向函数传入参数,是按传值方式传入的。传值的含义是指,在函数体内,会生成一个传入值的复制,在函数内部对参数的修改,不会影响到传入的值。有时,因为开发的需要,希望在函数内部能够修改传入的值,这时就需要对函数参数使用传址方式。传址的含义是指,在函数体内,真实引用传入的值,这意味着,在函数体内使用的函数参数,和传入的值完全是同一个,而不单单是传入值的一个复制。这时,在函数内部修改了参数的值,同时也就修改了传入的值。

在PHP中,要想在函数参数中传址,需要在定义函数时,在参数前加上符号:&。代码2-35演示了PHP函数如何使用传址方式传递参数。

代码2-35 传址方式传递函数参数2-35.php


01 <?php

02 $i=100;

03

04 function func(&$n)

05 {

06 $n=$n+100;//因为传址传入变量$i,所以这里的变量$n引用的就是$i本身,此句等价于$i=$i+100

07 }

08

09 echo"调用函数func前:\$i=$i";

10 echo"<br/>";

11 echo"<br/>";

12

13 func($i);//将$i传入函数func,因为是传址方式,所以此时函数内的变量$n就是变量$i

14 echo"调用函数func后:\$i=$i";

15 ?>


【代码解析】上述程序第4~7行定义函数func(),该函数接受一个传址方式的参数。执行函数体内的第6行语句“$n=$n+100;”同时会使变量$i的值发生改变。程序的执行结果如图2-30所示,从中可以看出,变量$i的值原来为100,因为经过参数传址方式的调用,在函数func()中使用的就是变量$i本身,所以变量$i的值被修改为200。

图 2-30 传址方式传递函数参数

为了和传址方式有个对比,将上述函数定义改为“function func($n)”,即按传值方式传递参数给函数func(),看看结果有什么不同。请看代码2-36。

代码2-36 传值方式传递函数参数2-36.php


01 <?php

02 $i=100;

03

04 function func($n)//定义函数func()

05 {

06 $n=$n+100;

07 }

08

09 echo"调用函数func前:\$i=$i";

10 echo"<br/>";

11 echo"<br/>";

12

13 func($i);//调用函数func()

14 echo"调用函数func后:\$i=$i.<br/>";

15 ?>


程序的执行结果如图2-31所示。

图 2-31 传值方式传递函数参数

【代码解析】从这个执行结果中可以看出,因为是传值方式传递给函数参数,在函数体内使用的是变量$i的一个复制,并不是$i本身,所以尽管在函数体内执行了加法运算,但并没有影响到变量$i的原始值。

教程类别