php = &


$a = 12;
$b =& $a;
echo $b; // 12
echo "\n";
$b = 23;
echo $a; // 23
echo "\n";
$a = 34;
echo $b; // 34
echo "\n";
$c = test($b);
echo $b; // 134
echo "\n";
echo $a; // 134
echo "\n";
echo $c; // 134
echo "\n";
$a = 342;
echo $c; // 134
echo "\n";
echo $b; // 342
echo "\n";
@$b =& test2($b);
echo $b; // 442
echo "\n";
$c =& $b;
$a = 154;
echo $c; // 154
echo "\n";
test3($c);
echo $c; // 0     $c 和 $and 绑定一起指向同一个内容,方法内又将 $and 和 $_GET[‘a‘] 绑定,但是test3方法内没有变量 $c ,函数内的操作不在$c影响范围
echo "\n";
$a = 111;

function test(&$and)
{
    return $and = $and + 100;
}
function test2($and)
{
    return $and = $and + 100;
}
function test3(&$and)
{
    return $and &= $_GET[‘a‘]; // $_GET[‘a‘] = 1
}
test(1); // 1是常量  不是变量

 

 

= &  将两个变量同时指向一个值,其中任一变量值发生变化,另一个也随之变化。

示例二的test方法中   参数是 &$and 返回传入的参数 $and    ,虽然将 test($b)  赋值给 $c,但是$c不是test()的传入参数 ,所以当$b改变时  $c并不会随之变化。test(&$and)的含义就是,将传入参数$and的值

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。