日期:2014-05-17  浏览次数:20515 次

php中@符号的作用和php函数前的&符号的作用

. 作用?用来隐藏错误的
2. 什么时候用?某些错误会中止程序,但其实它可能只是局布的错误,因一个小错误而中止了程序,肯定不好啦,因此在自己意料之中可能出错的地方前面加个“@”,就能防止因错误而引起的程序中止。比如“$con =@mysql_connect($MYhost,$DB_name,$DB_PassWord);”
3. 应注意什么问题?
@只是掩耳盗铃的做法,它只是隐藏了错误,但并没有解决错误。

?

?

第二个问题答案:

?

?

php函数前的&符号的作用:
看下面的代码,函数test前面有一个&符号.
function &test(){
//申明一个静态变量
static $b=0;
$b=$b+1;
echo $b;
return $b;
}
调用方式及输出结果如下:
$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这条语句会输出 $b的值 为2
$a=&test();//这条语句会输出 $b的值 为3
$a=5;
$a=test();//这条语句会输出 $b的值 为6
说明:
通过这种方式$a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别.
至于原因: 这是PHP的规定
PHP规定通过$a=&test(); 方式得到的才是函数的引用返回.
至于什么是引用返回呢(php手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。)
手册上的这句话可能不太好理解,看下面的解释:
$a=test()方式调用函数,只是将函数的值赋给$a而已, 而$a做任何改变 都不会影响到函数中的$b.
而通过$a=&test()方式调用函数呢, 他的作用是将return $b中的 $b变量的内存地址与$a变量的内存地址,
指向了同一个地方.
即产生了相当于这样的效果($a=&b;) 所以改变$a的值,也同时改变了$b的值,所以在执行了:
$a=&test();
$a=5;
以后,$b的值变为了5