PHP:echo、print、print_r 和 var_dumpphp
echo
和 print
都不是函數,而是 語言結構,因此圓括號都不是必需的。二者十分類似,功能幾乎是徹底同樣。數組
一、echo 能夠輸出多個字符串,使用 ,
鏈接函數
echo 'a','b','c';
輸出:abc.net
若是你非要加上圓括號,須要注意調試
echo ('a','b','c'); //錯誤 echo ('a'),('b'),('c'); //正確
二、print 只能輸出一個字符串code
print 'a','b','c'; //錯誤 print 'abc'; //正確 print 'a'.'b'.'c'; //正確
注意:上面的 'a'.'b'.'c'
並非多個字符串,而是 PHP 中拼接(concat)多個字符串後的一個字符串。字符串
三、echo 沒有返回值,print 有返回值 1get
所以 print 能用在表達式中:string
$ret = print 'abc'; echo $ret + 1;
輸出:abc2io
四、echo 輸出的速度比 print 快
print_r()
顯示關於一個變量的易於理解的信息。若是給出的是 string、integer 或 float,將打印變量值自己。若是給出的是 array,將會按照必定格式顯示鍵和元素。object 與數組相似。
print_r()
會捨棄掉小數位末尾的 「0」;布爾值 true 輸出 1,false 不輸出;空字符串 和 null 不輸出。若是給出的是 array,將會按照必定格式顯示鍵和元素。object 與數組相似。
var_dump()
方法是判斷一個變量的類型與長度,並輸出變量的值和數據類型。var_dump()
輸出比 print_r()
更詳細,通常調試時用得多。二者區別以下:
$arr = array(5, 5.0, 'hello', '', true, false, null); var_dump($arr); print_r($arr);
輸出:
array(7) { [0]=> int(5) [1]=> float(5) [2]=> string(5) "hello" [3]=> string(0) "" [4]=> bool(true) [5]=> bool(false) [6]=> NULL } Array ( [0] => 5 [1] => 5 [2] => hello [3] => [4] => 1 [5] => [6] => )
題外:若是想捕捉 print_r()
的輸出,可添加一個 true 參數。此時 print_r()
將不打印結果,而是返回其輸出。
$str = "hello"; $result = print_r($str, true); echo $result;
輸出:hello