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

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-08 22:56:54 浏览: 评论:0 

在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. ?> 

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

Tags: php 传值 传引用

分享到: