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

PHP 變量輸出函數大比拼:var_dump、var_export、print_r 差異與選型指南

     編輯:PHP 綜合知識

調試時輸出變量結構,var_dump、var_export、print_r 三大函數各有特色。理解輸出格式、返回值、適用場景差異,能大幅提升調試效率。

測試數據準備

$a = [1, 1, 32, 322, 3433, [32, 232, 23232]];
$b = 1234;
$c = "alsdfl;asdf";
$d = 'a';
$e = fopen("not_exist.txt", "r");  // 返回 false

輸出對比總覽

函數輸出格式類型信息長度信息返回值可作為代碼
var_dump結構化文本✅✅ (字符串/數組)void❌
var_export合法 PHP 代碼✅ (隱含)❌bool/string✅
print_r易讀文本❌❌bool/string❌

實際輸出示例

var_dump() - 最詳盡

array(6) {
  [0]=> int(1)
  [1]=> int(1)
  [2]=> int(32)
  [3]=> int(322)
  [4]=> int(3433)
  [5]=> array(3) {
    [0]=> int(32)
    [1]=> int(232)
    [2]=> int(23232)
  }
}
int(1234)
string(11) "alsdfl;asdf"
string(1) "a"
bool(false)

var_export() - 可執行代碼

array (
  0 => 1,
  1 => 1,
  2 => 32,
  3 => 322,
  4 => 3433,
  5 => 
  array (
    0 => 32,
    1 => 232,
    2 => 23232,
  ),
)
1234
'alsdfl;asdf'
'a'
false

print_r() - 最易讀

Array
(
    [0] => 1
    [1] => 1
    [2] => 32
    [3] => 322
    [4] => 3433
    [5] => Array
        (
            [0] => 32
            [1] => 232
            [2] => 23232
        )
)
1234
alsdfl;asdf
a

核心差異深度解析

var_dump() - 調試首選

  • 顯示類型、長度、值,資源類型顯示詳細信息
  • 支持多參數:var_dump($a, $b, $c)
  • 無返回值,直接輸出
  • 配合 <pre> 保留縮進格式

var_export() - 代碼生成/緩存

  • 輸出合法 PHP 代碼,可直接 include 或 eval
  • 第二參數 true 返回字符串:$code = var_export($arr, true)
  • 資源類型輸出 NULL (無法序列化)
  • 常用於配置文件生成、數據緩存序列化

print_r() - 快速查看

  • 輸出簡潔易讀,適合日誌記錄
  • 第二參數 true 返回字符串
  • 不顯示類型、長度、資源信息
  • 布爾值 false 輸出空字符串,易混淆

進階調試技巧

<?php
// 1. 統一格式化輸出
function debug($var, $label = '', $die = false) {
    echo '<pre style="background:#f5f5f5;padding:10px;border:1px solid #ddd;">';
    if ($label) echo "$label:\n";
    var_dump($var);
    echo '</pre>';
    if ($die) die;
}

// 2. 只在開發環境輸出
if (($_SERVER['SERVER_NAME'] ?? '') === 'localhost') {
    debug($user, '當前用戶');
}

// 3. 獲取 print_r/var_export 字符串用於日誌
$log = print_r($data, true);
error_log($log, 3, '/var/log/debug.log');

選型建議

  • 開發調試、檢查類型/長度:var_dump()
  • 生成配置文件、數據緩存、導出代碼:var_export()
  • 日誌記錄、快速查看數組結構:print_r()
  • 現代框架:使用 Symfony VarDumper、Laravel dd() 等增強工具
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved