首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 輸出函式差異總整理:echo vs print_r vs var_dump 完整比較

     編輯:PHP 相關知識

三大函式核心差異

特性echoprint_r()var_dump()
類型語言結構 (非函式)函式函式
回傳值無成功返回 true無
參數數量可多參數 (逗號分隔)單一參數可多參數
輸出格式原始值易讀結構 (陣列/物件)詳細結構+型別+長度
適用資料型別字串、數值所有型別 (資源顯示 Resource id)所有型別 (含型別資訊)
主要用途一般輸出、模板輸出除錯陣列/物件結構深度除錯、型別檢查

實際輸出比較

$arr = ['name' => 'John', 'age' => 25, 'tags' => ['php', 'mysql']];
$obj = (object)['id' => 1, 'status' => true];

// echo
echo $arr; 
// Notice: Array to string conversion → "Array"

// print_r
print_r($arr);
/* 輸出:
Array
(
    [name] => John
    [age] => 25
    [tags] => Array
        (
            [0] => php
            [1] => mysql
        )
)
*/

// var_dump
var_dump($arr);
/* 輸出:
array(3) {
  ["name"]=>
  string(4) "John"
  ["age"]=>
  int(25)
  ["tags"]=>
  array(2) {
    [0]=>
    string(3) "php"
    [1]=>
    string(5) "mysql"
  }
}
*/

進階用法

print_r 返回字串而非輸出

$output = print_r($arr, true); // 第 2 參數 true = 返回字串
file_put_contents('debug.log', $output);

var_dump 多變數一次輸出

var_dump($arr, $obj, $GLOBALS['config']);
// 依序輸出所有變數詳細資訊

var_export 可執行的程式碼表示

$code = var_export($arr, true);
// 返回: array ( 'name' => 'John', 'age' => 25, ... )
// 可直接存為 PHP 檔案 require 使用

除錯最佳實務

// 開發環境專用除錯函式
function dd(...$vars) {
    echo '<pre>';
    foreach ($vars as $var) {
        var_dump($var);
    }
    echo '</pre>';
    die;
}

// 使用
dd($user, $request->all(), $config);

效能考量

  • echo 最快,無函式呼叫開銷
  • print_r、var_dump 較慢,**嚴禁留在生產環境程式碼中**
  • 大量資料除錯時,考慮只輸出關鍵欄位或使用 debug_zval_dump 參考計數

常見誤區

  • echo($a, $b) 加上括號會語法錯誤,正確是 echo $a, $b
  • print_r 輸出布林值 false 顯示空字串,null 也顯示空字串,易混淆
  • var_dump 會輸出到標準輸出,API 回應中使用會破壞 JSON 格式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved