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

16次閱讀
尚無留言

一.PHP@小老鼠符合的作用
1. 作用?
用來隱藏錯誤的。

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

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

二.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。

正文完