PHP中函数参数有两种传递方式值传递和引用传递。
区别
值传递,函数内部的修改不影响函数外的修改。
引用传递,函数内部的修改影响函数外的修改。
优缺点
值传递,值传递是对参数的一个拷贝,不影响函数外的值,但是对系统存在内存的消耗。
引用传递,值传递是对参数的地址,影像函数外的值,但是相对值传递系统内存消耗少。
它们各有优缺点,实际情况根据需要使用不同的方式。
例子
值传递
<?php
//值传递,函数
function test($a){
$a = $a+3;
return $a;
}
$a = 1;
$b = test($a);
echo "a值:".$a."<br>";
echo "b值:".$b;
?>
输出
a值:1
b值:4
b值:4
引用传递
<?php
//引用传递,函数
function test(&$a){
$a = $a+3;
return $a;
}
$a = 1;
$b = test($a);
echo "a值:".$a."<br>";
echo "b值:".$b;
?>
输出
a值:4
b值:4
b值:4
从结果看出,值传递时$a的值没有改变还是1,而引用传递时$a的值也改变了,变为4了。
总结
面试过程中,一般只需要说出引用传递会改变函数外的值即可。