主要是实参和形参的相互影响性。
引用传递:形参的改变会影响实参
值传递:赋值,不相互影响
参数引用传递
$pams1 = 1;
function ssr($params) //这里的参数的没有 &
{
$params = 4;
return $params;
}
$pams2 = ssr($pams1);
echo '1:'.$pams1; // = 1
echo "<br>";
echo '2:'.$pams2; // = 4
echo "<hr>";
$pams1 = 1;
function ssr(&$params) //这里的参数有 &
{
$params = 4;
return $params;
}
$pams2 = ssr($pams1);
echo '1:'.$pams1; // = 4
echo "<br>";
echo '2:'.$pams2; // = 4
echo "<hr>";
引用传递的结果会因为引用的参数的改变而改变
函数引用传递
$a = 1;
function &func(&$a) {
return $a;
}
$b = func($a); // 这里不是函数引用传递
$c = &func($a); // 这是函数引用传递
$b = 2;
echo "a: $a, b: $b, c: $c. <br />";
//输出a: 1, b: 2, c: 1.
//可见对$b的修改不会影响$a
$c = 3;
echo "a: $a, b: $b, c: $c. <br />";
//输出a: 3, b: 2, c: 3.
//可见对$c的修改会影响$a