一次,下載別人的源碼來看,看到無數@記號,開始以為是注釋;後來發現@後面的語句也是會執行的。納悶了,這個記號究竟是做什麼的呢.....
隨著學習的不斷深入,總算是明白了。這個記號的作用有點類似於asp中的忽略錯誤"on error resume next "。他們的作用是一樣的,當php解釋器遇到@開頭的語句時候,無論本行的語句是否執行成功,都會繼續執行後續的語句,而且不會報錯。但特別注意,@(at)記號只對當前行起作用哦。
希望關於@(at)的問題就在這打住把。
eg.下面這句話肯定報錯
報錯代碼
代碼如下 復制代碼<?php
$sql = mysql_connect(*);
?>
然而,如果我們加上@(at)記號,就不會報錯了,而且繼續執行。
不報錯代碼
代碼如下 復制代碼<?php
@$sql = mysql_connect(*);
echo "我一直在執行";
?>
繼續執行下邊的代碼。
@$page=$_GET['page']?intval($_GET['page']):1;
這句是從URL中獲取page關鍵字的值,比如"index.php?page=5",則$page就會取到5。
但是如果有error,比如"index.php"後沒有page關鍵字了,如果去取$_GET['page']不存在就會報錯,這時有@就可以忽視這個小錯誤了。
又比如:
代碼如下 復制代碼$conn = mysqli_conncet("q","w","e","r");
這樣會輸入錯誤信息,關於連接數據庫方面的。
代碼如下 復制代碼@$conn = mysqli_conncet("q","w","e","r");
如果$conn前面加@的話就可以不讓他輸出錯誤信息了。