PHP:echo、print、print_r() 和 var_dump()

PHP:echo、print、print_r 和 var_dumpphp

echo 和 print

echoprint 都不是函數,而是 語言結構,因此圓括號都不是必需的。二者十分類似,功能幾乎是徹底同樣。數組

一、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() 和 var_dump()

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

參考

相關文章
相關標籤/搜索