当前位置:首页 > PHP教程 > php应用 > 列表

PHP传值与传引用的区别例子对比

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-10 14:17:19 浏览: 评论:0 

本文章来给各位介绍关于在PHP传值与传引用的些例子对比了,希望这些例子能帮助到各位同学.

传值:是把实参的值赋值给行参,那么对行参的修改,不会影响实参的值.

传引用:真正的以地址的方式传递参数传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值,代码如下:

  1. $b=1; //定义变量2 
  2. $1= &$b//将变量2的引用传给变量1 
  3. echo $b.'<br />'//显示为1 
  4. echo $a
  5. $a= 2; //把2赋值给变量1 
  6. echo $b//显示为2 

一,php实例

1,传值,代码如下:

  1. <?php  
  2. $param1=1; //定义变量1  
  3. $param2=2; //定义变量2  
  4. $param2 = $param1//变量1赋值给变量2  
  5. echo $param2//显示为1  
  6. ?> 

2,传引用,代码如下:

  1. <?php  
  2. $param2=1; //定义变量2  
  3. $param1 = &$param2//将变量2的引用传给变量1  
  4. echo $param2//显示为1  
  5. $param1 = 2; //把2赋值给变量1  
  6. echo $param2//显示为2  
  7. ?> 

3,函数传值,代码如下:

  1. <?php  
  2. //传值  
  3. $param1 = 1; //定义变量1  
  4. function add($param2//传参数  
  5. {  
  6. $param2=3; //把3赋值给变量2  
  7. }  //开源软件:phpfensi.com 
  8. $param3=add($param1); //调用方法add,并将变量1传给变量2  
  9. echo '<br>$param1=='.$param1.'<br>'//显示为$param1==1  
  10. echo '<br>$param2=='.$param2.'<br>'//显示为$param2== 因为$param2是局部变量,所以不能影响全局  
  11. echo '<br>$param3=='.$param3.'<br>'//显示为$param3== 因为add方法没有返回值,所以$param3为空  
  12. ?> 

4,函数传引用,代码如下:

  1. <?php  
  2. //传值  
  3. $param1 = 1; //定义变量1  
  4. function add(&$param2//传参数  
  5. {  
  6. $param2=3; //把3赋值给变量2  
  7. // return $param2; //返回变量2  
  8. }  
  9. echo '<br>$param1=='.$param1.'<br>'//显示为$param1==1 没对变量1进行操作  
  10. $param3=add($param1); //调用方法add,并将变量1的引用传给变量2  
  11. echo '<br>$param1=='.$param1.'<br>'//显示为$param1==3 调用变量过程中,$param2的改变影响变量1,虽然没有return  
  12. echo '<br>$param2=='.$param2.'<br>'//显示为$param2== 因为$param2局部变量,所以不能影响全局  
  13. echo '<br>$param3=='.$param3.'<br>'//显示为$param3== 如果把方法里面的return注释去掉的话就为$param3==3  
  14. ?> 

5,函数传引用2,代码如下:

  1. <?php  
  2. //传引用  
  3. $param1 = 1;  
  4. function &add(&$param2)  
  5. {  
  6. $param2 = 2;  
  7. return $param2;  
  8. }  
  9. $param3=&add($param1);  
  10. $param4=add($param1);  
  11. echo '<br>$param3=='.$param3.'<br>'//显示为$param3==2  
  12. echo '<br>$param4=='.$param4.'<br>'//显示为$param4==2  
  13. echo '<br>$param1=='.$param1.'<br>'//显示为$param1==2 调用变量过程中,$param2的改变影响变量1  
  14. $param3++;  
  15. /*下面显示为$param1==3,这是因为$param2和$param1引用到同一个地方,  
  16. * 返回值前面加了地址符号还是一个引用$param3=&add($param1);  
  17. * 这样$param3,$param2和$param1引用到同一个地方,当$param3++;时,  
  18. * $param1会被改变*/  
  19. echo '<br>$param1=='.$param1.'<br>';  
  20. $param4++;  
  21. /* 下面显示为$param1==3,这里为什么是3而不是4呢,这是因为返回值前面没有  
  22. * 地址符号,它不是一个引用所以当$param4改变时不会影响$param1*/  
  23. echo '<br>$param1=='.$param1.'<br>';  
  24. ?>

Tags: PHP传值 PHP引用

分享到: