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

PHP var_dump() 函數詳解:變量類型、長度、值完整輸出與調試實戰技巧

     編輯:PHP 綜合知識

函數定義與核心作用

void var_dump(mixed $var, mixed ...$vars)
  • 輸出變量的類型、長度/大小、值
  • 支持多參數一次性輸出
  • 對數組/對象遞歸展開結構
  • 引用標記 &、遞歸標記 *RECURSION* 可見

基礎輸出示例

$ta = 1;
$tb = 't';
var_dump($ta, $tb);

輸出結果

int(1)
string(1) "t"
  • int(1):整型,值 1
  • string(1) "t":字符串,長度 1,值 "t"

完整類型輸出格式速查

類型輸出格式示例
整數int(值)int(42)
浮點數float(值)float(3.14)
布爾bool(值)bool(true)
字符串string(長度) "值"string(5) "hello"
數組array(元素數) { ... }array(2) { [0]=>int(1) [1]=>string(1) "a" }
對象object(類名)#ID (屬性數) { ... }object(stdClass)#1 (1) { ["prop"]=>string(3) "foo" }
NULLNULLNULL
資源resource(類型) IDresource(mysql link) ID#3

進階輸出示例

多維數組

$arr = [
    'user' => ['name' => 'John', 'age' => 25],
    'tags' => ['php', 'mysql']
];
var_dump($arr);
array(2) {
  ["user"]=>
  array(2) {
    ["name"]=>
    string(4) "John"
    ["age"]=>
    int(25)
  }
  ["tags"]=>
  array(2) {
    [0]=>
    string(3) "php"
    [1]=>
    string(5) "mysql"
  }
}

對象與可見性

class User {
    public $name = 'John';
    protected $email = 'john@example.com';
    private $password = 'secret';
}
$user = new User();
var_dump($user);
object(User)#1 (3) {
  ["name"]=>
  string(4) "John"
  ["email":protected]=>
  string(16) "john@example.com"
  ["password":"User":private]=>
  string(6) "secret"
}

引用與遞歸

$a = 'original';
$b = &$a;
var_dump($a, $b);
string(8) "original"
string(8) "original"  // 同一內存地址

$arr = [1, 2];
$arr[] = &$arr;  // 自引用
var_dump($arr);
array(3) {
  [0]=> int(1)
  [1]=> int(2)
  [2]=> &array(3) { *RECURSION* }
}

調試實戰技巧

1. 配合 die/exit 即時中斷

var_dump($variable); die;

2. 輸出美化(開發環境)

echo '
';
var_dump($data);
echo '
';

3. 限制輸出深度(防止巨大對象爆屏)

// xdebug 可配置
// ini_set('xdebug.var_display_max_depth', 3);

4. 替代方案對比

函數輸出特點適用場景
var_dump類型+長度+值,結構完整深度調試、結構分析
print_r僅值結構,可返回字符串日誌記錄、API 響應檢查
var_export合法 PHP 代碼格式,可 eval配置導出、緩存序列化
json_encodeJSON 格式,前端友好API 調試、跨語言交互

常見問題 FAQ

  1. 變量不存在會報錯嗎? 會觸發 Notice "Undefined variable",輸出 NULL
  2. 能輸出資源細節嗎? 僅顯示資源類型和 ID,具體內容需對應函數(如 stream_get_meta_data())
  3. 性能影響? 大數組/對象遞歸輸出較慢,生產環境禁用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved