网站地图    收藏   

主页 > php专栏 > php应用 >

php 传值与传引用的区别详解 - php高级应用

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:

[导读] 在php中传值与传引用对于我们来讲是有比较大的区别的一个引用可以调用内存地址赋值了,这样只要内存地址中内容变化而赋值的变量也就变化了,付值只是把内存中值给其它变量而己...

php 传值与传引用的区别详解

在php中传值与传引用对于我们来讲是有比较大的区别的一个引用可以调用内存地址赋值了,这样只要内存地址中内容变化而赋值的变量也就变化了,付值只是把内存中值给其它变量而己.

传值:

函数参数压栈的是参数的副本.

任何的修改是在副本上作用.没有作用在原来的变量上.

传引用:

压栈的是引用的副本,由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作,(作用和传指针一样,只是引用少了解指针的草纸)

例子代码如下:

  1. function func1($a) { $a = $a + 1;}  
  2. function func2(&$a) { $a = $a + 1;} 
  3.  $sample = 1;  
  4. func1($sample);  
  5.  echo $sample// 输出 1 
  6.  $sample = 1;  
  7. func2($sample);  
  8.  echo $sample// 输出 2 
  9. //例代码如下: 
  10. <?php 
  11. $num1 = 15; 
  12. $num2 = &$num1
  13. $num2 = 20; 
  14. echo $num1;//输出20 
  15. ?> 
  16. //再比如如下代码: 
  17. <?php 
  18. function func1($a) { 
  19.   $a = $a + 1; 
  20. function func2(&$a) { 
  21.   $a = $a + 1; 
  22. $sample = 1; 
  23. func1($sample);  
  24. echo $sample// 输出 1 
  25.  
  26. $sample = 1; 
  27. func2($sample);  
  28. echo $sample// 输出 2 
  29. ?> 

总结一下:传值的话,如果是非对象,会传一个值的拷贝,对这个变量做任何改动都不影响原值,传引用或者传对象,是传真实的内存地址,对这个变量做的改动会影响原值.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论