加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 传值和传引用的区别解析

发布时间:2022-01-21 03:30:16 所属栏目:PHP教程 来源:互联网
导读:在php中传值与传引用对于我们来讲是有比较大的区别的一个引用可以调用内存地址赋值了,这样只要内存地址中内容变化而赋值的变量也就变化了,付值只是把内存中值给其它变量而己. 传值: 函数参数压栈的是参数的副本. 任何的修改是在副本上作用.没有作用在原来
  在php中传值与传引用对于我们来讲是有比较大的区别的一个引用可以调用内存地址赋值了,这样只要内存地址中内容变化而赋值的变量也就变化了,付值只是把内存中值给其它变量而己.
 
  传值:
 
  函数参数压栈的是参数的副本.
 
  任何的修改是在副本上作用.没有作用在原来的变量上.
 
  传引用:
 
  压栈的是引用的副本,由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作,(作用和传指针一样,只是引用少了解指针的草纸)
 
  例子代码如下:
 
  function func1($a) { $a = $a + 1;}  
  function func2(&$a) { $a = $a + 1;}
   $sample = 1;  
  func1($sample);  
   echo $sample; // 输出 1
   $sample = 1;  
  func2($sample);  
   echo $sample; // 输出 2
  //例代码如下:
  <?php
  $num1 = 15;
  $num2 = &$num1;
  $num2 = 20;
  echo $num1;//输出20
  ?>
  //再比如如下代码:
  <?php
  function func1($a) {
    $a = $a + 1;
  }
  function func2(&$a) {
    $a = $a + 1;
  }
  $sample = 1;
  func1($sample);  
  echo $sample; // 输出 1
  
  $sample = 1;
  func2($sample);  
  echo $sample; // 输出 2
  ?>
  总结一下:传值的话,如果是非对象,会传一个值的拷贝,对这个变量做任何改动都不影响原值,传引用或者传对象,是传真实的内存地址,对这个变量做的改动会影响原值.

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读