php: 传址引用
如果在参数变量前加上“&”,则它将被作为引用传递。
虽然可以像全局变量一样使用,但可读性会变差。
引用值
function increment(&$var)
{
$var++;
}
$a = 0;
increment($a);
echo $a; // 1
increment($a);
echo $a; //2
还可以将函数作为引用传递
function increment(&$var)
{
$var++;
return $var;
}
function &reference()
{
$a = 0;
return $a;
}
$a = increment(reference());
echo $a; // 1
关于数组和对象的引用
有点有趣。
虽然无法引用数组,但似乎可以传递引用对象。
function increment($arr)
{
foreach ($arr as &$i) {
$i++;
}
}
$arr = [1,2,3,4,5];
increment($arr);
print_r($arr); // [1,2,3,4,5]
$obj = (object)$arr;
increment($obj);
print_r($obj); // [2,3,4,5,6]