php中@符號的作用和php函數前的&符號的作用

[email protected]小老鼠符合的作用
1. 作用?
用來隱藏錯誤的。

2. 什麼時候用?
某些錯誤會中止程序,但其實它可能只是小區塊的錯誤,因一個小錯誤而中止了程序,肯定不好啦,因此在自己意料之中可能出錯的地方前面加個「@」,就能防止因錯誤而引起的程序中止。比如「$con [email protected]_connect($MYhost,$DB_name,$DB_PassWord);」

3. 應注意什麼問題[email protected]只是掩耳盜鈴的做法,它只是隱藏了錯誤,但並沒有解決錯誤。

二.PHP函數前的&符號的作用:
概括的說類似於C語言中的指針符號(*),用來變量之間內存地址的傳遞修改。
看下面的代碼,函數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 。