PHP不會檢查單引號 '' 字符串中變量內插或(幾乎)任何轉義序列,所以采用單引號這種方式來定義字符串相當簡單快捷。但是,雙引號 "" 則不然,php會檢查字符串中的變量或者轉義序列,并輸出變量和轉義序列的值。
$a = "123"; print '$a\t'; print '$a';
輸出:
$a\t$a
如果是雙引號 "" :
$a = "123"; print "$a\t"; print "$a";
輸出:
注意:
單引號 '' 可以解釋 '\ 和 \\ 這倆轉義字符,就這倆!
能使單引號字符盡量使用單引號,單引號的效率比雙引號要高(因為雙引號要先遍歷一遍,判斷里面有沒有變量,然后再進行操作,而單引號則不需要判斷)。
單引號 '' 和雙引號 "" 都可以用來
echo 和 print的區別:
這兩都是語句,不是函數;這倆語句的作用都是輸出字符串。但是:
echo 可以傳入多個參數。而 print 只有一個:
echo "123", "123";//輸出123123 print "123", "123";//報錯,只可以寫一個參數 print "123";
echo 無返回值,而 print 返回值恒為1;
注意:
PHP的八中數據類型,除了數組 array 和沒有實現 __toString 魔法函數的對象都可以用echo或者print來輸出,并且 boolean 類型的用echo或者print來輸出,只會顯示1或者不顯示。
echo true; //輸出1 echo false; //什么都不輸出
數字和字符串相加:
PHP會自動完成字符串和數字的轉換,這樣有時候會帶來好處,有時候卻很讓人苦惱。
echo 1 + "2";//輸出3 echo 1 + "a";//輸出1
$a = 1 + "A"; 試問變量 $a 的數據類型?
if(is_numeric($a)){ echo "是整型"; } else{ echo "是其他類型"; } //最后輸出:是整型
隨機數生成函數 rand() 和 mt_rand() 的區別:
rand() 和 mt_rand() 用法完全一致,它倆分別有兩種用法:
//第一種用法: rand();//產生的隨機數為0到getrandmax()之間 mt_rand();//產生的隨機數為0到mt_getrandmax()之間 //第二種用法: rand($min, $max);//產生從$min到$max之間的隨機數 mt_rand($min, $max);//產生從$min到$max之間的隨機數
區別: mt_rand() 是更好地隨機數生成器,因為它跟 rand() 相比播下了一個更好地隨機數種子;而且性能上比 rand() 快4倍, mt_getrandmax() 所表示的數值范圍也更大
BCMath庫和GMP庫的區別:
BCMath庫很容易使用。將數字作為字符串傳入函數,它會將數字的和(或差,積等)作為字符串返回。不過,使用BCMath時,對數字所能完成的操作僅限于基本算術運算。
$sum = bcadd("12345678", "87654321");//$sum = "99999999"
GMP函數可以接受整數或者字符串作為參數,不過它們更樂意將數字作為資源來傳遞,這實際上是指向數字內部表示的指針。所以與BCMath函數不同,BCMath函數返回字符串,而GMP只返回資源。可以將這個資源作為數字傳遞到任何GMP函數。
$four = gmp_add(2, 2);//可以傳入整數 $eight = gmp_add('4', '4');//或字符串 $twelve = gmp_add($four, $eight);//或GMP資源
GMP唯一的缺點是,想要用非GMP函數查看或使用資源時,需要使用 gmp_strval() 或 gmp_intval() 顯示地進行轉換。
注意
BCMath與PHP捆綁發行,若GMP不與PHP捆綁,需要另外下載和安裝。完成高精度數學運算的另一種選擇是使用PECL的 big_int 庫。
include和require的區別:
include() 、 require() 語句包含并運行指定文件。這兩結構在包含文件上完全一樣,唯一的區別是對于錯誤的處理:
•require() 語句在遇到包含文件不存在,或是出錯的時候,就停止即行,并報錯。
•include() 在遇到包含文件不存在的時候,只生成警告,并且腳本會繼續。
換句話說,如果你想在丟失文件時停止處理頁面,那就別猶豫了,用 require() 吧。 include() 就不是這樣,腳本會繼續運行。
include_once和require_once