php中传值与传引用的区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
参考技术A 之前回答过一个同样的问题,粘过来再用一次:

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

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

参考资料:http://zhidao.baidu.com/question/227679087.html

参考技术B 简单的说,在数组中传值时,变量的值是不会产生变化的,而传引用的话,变量的值可能会变化,例如
<?php
$var = 2;
//值传递
function a($v)
$v =$v*$v;

echo $var; //输出2
a($var);
echo $var;//仍输出2
?>

<?php
$var = 2;
//引用传递
function a(&$v)
$v =$v*$v;

echo $var; //输出2
a($var);
echo $var;//输出4
?>

什么时候传值,什么时候传引用,没有具体的规律,具体问题具体分析

以上是关于php中传值与传引用的区别?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中传值与传引用的区别 能举一个例子吗

C语言中传值与传地址区别

[UE4]传值与传引用

python中函数传值与传引用

Java 中的传值与传引用

PHP M题2基础