在函数前面加&符号,在实际开发中用的很少,而且我建议你避免使用,既然你问到,我给你解释一下.
,在函数前面加&符号,表示引用返回,这个不好理解,我举例说明.
<?php
function &instance()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
$a=instance();//这条语句会输出$b的值为1,相当于对instance函数普通调用
$a=5; //因为上面是普通调用,因此$a=5,不会影响到 &instance()函数的$b的值. $b为1
$a=instance();//这条语句会输出$b的值为2 ,因为没有引用返回,$a=5,不对赋值起作用
$a=&instance();//这条语句会输出$b的值为3 ,成功引用返回,注意是引用返回.
$a=5; //注意呀,这里因为上面你是 $instacne()方式调用的,这时$a的修改会影响到 $instacne()函数的$b,$b此时为5
$a=instance();//这条语句会输出$b的值为6 ,又是普通调用
?>
,在函数前面加&符号,表示引用返回,这个不好理解,我举例说明.
<?php
function &instance()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
$a=instance();//这条语句会输出$b的值为1,相当于对instance函数普通调用
$a=5; //因为上面是普通调用,因此$a=5,不会影响到 &instance()函数的$b的值. $b为1
$a=instance();//这条语句会输出$b的值为2 ,因为没有引用返回,$a=5,不对赋值起作用
$a=&instance();//这条语句会输出$b的值为3 ,成功引用返回,注意是引用返回.
$a=5; //注意呀,这里因为上面你是 $instacne()方式调用的,这时$a的修改会影响到 $instacne()函数的$b,$b此时为5
$a=instance();//这条语句会输出$b的值为6 ,又是普通调用
?>