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

作者:袖梨 2022-06-24

传值:  

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

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

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

例子

 代码如下 复制代码

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

例子

 代码如下 复制代码


$num1 = 15;
$num2 = &$num1;
$num2 = 20;
echo $num1;//输出20
?>

再比如:

 代码如下 复制代码

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

总结一下

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

相关文章

精彩推荐