首頁 >後端開發 >php教程 >詳細介紹PHP在偵錯時echo print() print_r() var_dump()的差異分享

詳細介紹PHP在偵錯時echo print() print_r() var_dump()的差異分享

黄舟
黄舟原創
2017-03-27 09:56:551837瀏覽

echo

  輸出一個或多個值(字串),多個值之間以逗號分隔。 echo是語言結構(language construct),而並不是真正的函數,因此不能作為表達式的一部分使用。

print()

#  函數print()列印一個值(它的參數),如果字串成功顯示則回傳true,否則傳回false。和echo一樣,但速度比echo慢。

print_r()

  可以簡單地將字串和數字印出來,如果給出的是string、integer 或float,將列印變數值本身。 object 與數組類似。而陣列則以括起來的鍵和值得列表形式顯示,並以Array開頭。記住,print_r() 將把陣列的指標移到最後邊。使用 reset() 可讓指標回到起始處。

$arr = array('name'=> 'bob','age' => 20, 'sex' => 'man');

print_r($arr);

輸出形如:

Array{
     [name] => bob,

     [age] => 20,

     [sex] => man
}

  但對,用print_r()來顯示布林值和NULL是沒有意義的:

#如:

print_r(true);           //输出1
print_r(false);          //没有输出
print_r(null);          //没有输出

  print_r()輸出布林值和NULL的結果沒有意義,因為都是列印」\n」。因此用var_dump()函數比較適合調試。

var_dump()

  判斷一個變數的型別與長度,並輸出變數的數值,如果變數有值,輸出的是變數的值並回返資料類型。此函數顯示關於一個或多個表達式的結構訊息,包括表達式的類型與值。陣列將遞歸展開值,透過縮排顯示其結構。

var_dump(true); //输出 bool(true)
var_dump(false);   // bool(false)
var_dump(null);   // bool(null)
var_dump(array('name' => 'bob', 'age' => 20));
array(2) {
    ['name'] => string(3) 'bob'
    ['age'] => int(20)
}

var_export()

#   跟print_r和var_dump類似,但是很少用。

var_dump和print_r的區別

  var_dump傳回表達式的類型與值而print_r只傳回結果,相較於偵錯程式碼使用var_dump更方便閱讀。

  print_r(),var_export(),var_dump()的區別具體見:

二維數組的輸出:

$arr=array(        
array('a'=>'aa','b'=>'bbb','c'=>'ccc'),        
array('a'=>'ddd','b'=>'eee','c'=>'fff'), 
        array('a'=>'gg','b'=>'hh')
);
echo "<pre class="brush:php;toolbar:false">";
print_r($arr);echo "
";echo "
";
var_export($arr);echo "
";echo "
";
var_dump($arr);echo "
";

print_r($arr)的輸出結果

Array(
    [0] => Array
        (
            [a] => aa
            [b] => bbb
            [c] => ccc
        )

    [1] => Array
        (
            [a] => ddd
            [b] => eee
            [c] => fff
        )

    [2] => Array
        (
            [a] => gg
            [b] => hh
        )

)

var_export($arr)的輸出結果

array (  0 => 
  array (    &#39;a&#39; => &#39;aa&#39;,    &#39;b&#39; => &#39;bbb&#39;,    &#39;c&#39; => &#39;ccc&#39;,
  ),  1 => 
  array (    &#39;a&#39; => &#39;ddd&#39;,    &#39;b&#39; => &#39;eee&#39;,    &#39;c&#39; => &#39;fff&#39;,
  ),  2 => 
  array (    &#39;a&#39; => &#39;gg&#39;,    &#39;b&#39; => &#39;hh&#39;,
  ),
)

var_dump($arr)的輸出結果

array (size=3)  0 => 
    array (size=3)    &#39;a&#39; => string &#39;aa&#39; (length=2)     &#39;b&#39; => string &#39;bbb&#39; (length=3)     &#39;c&#39; => string &#39;ccc&#39; (length=3)  1 => 
    array (size=3)    &#39;a&#39; => string &#39;ddd&#39; (length=3)  &#39;b&#39; => string &#39;eee&#39; (length=3)   &#39;c&#39; => string &#39;fff&#39; (length=3)  2 => 
    array (size=2)    &#39;a&#39; => string &#39;gg&#39; (length=2)     &#39;b&#39; => string &#39;hh&#39; (length=2)

下面再給一個json格式的輸出:

$arr=array(array(&#39;a&#39;=>&#39;aa&#39;,&#39;b&#39;=>&#39;bbb&#39;,&#39;c&#39;=>&#39;ccc&#39;),           
array(&#39;a&#39;=>&#39;ddd&#39;,&#39;b&#39;=>&#39;eee&#39;,&#39;c&#39;=>&#39;fff&#39;),           
array(&#39;a&#39;=>&#39;gg&#39;,&#39;b&#39;=>&#39;hh&#39;));
$arra=json_encode($arr);echo "<pre class="brush:php;toolbar:false">";
print_r($arra);echo "
";echo "
";
var_export($arra)echo "
";echo "
";
var_dump($arra);echo "
";

print_r($arra)輸出

[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]

var_export($arra)輸出

'[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]'

var_dump($arra)輸出

string '[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]' (length=84)

以上是詳細介紹PHP在偵錯時echo print() print_r() var_dump()的差異分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn