萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 依變數型別自動選擇 echo 或 var_dump 輸出

智慧型變數輸出函數:標量用 echo,複合型用 var_dump

除錯時常需檢視變數內容:標量 (字串、整數、浮點、布林) 用 echo 直接顯示;陣列、物件、資源則需 var_dump 看結構。利用 is_scalar() 可自動判斷並選擇適當輸出方式。

實作函數

<?php
function show_var($var) {
    if (is_scalar($var)) {
        echo $var;
    } else {
        var_dump($var);
    }
}

// 測試
$pi = 3.1416;
$proteins = ['hemoglobin', 'cytochrome c oxidase', 'ferredoxin'];

show_var($pi);       // 輸出: 3.1416
show_var($proteins); // 輸出: array(3) { [0]=> string(10) "hemoglobin" ... }
?>

is_scalar() 判斷規則

  • 回傳 true:標量型別 — int、float、string、bool。
  • 回傳 false:非標量 — array、object、resource、null。
  • 注意: resource 雖底層為整數 ID,但 is_scalar() 回傳 false (因為是抽象資料型別)。

進階版:支援 null、可自訂標籤、回傳字串而非直接輸出

<?php
function debug_var($var, $label = '', $return = false) {
    $out = '';
    if ($label) $out .= '' . htmlspecialchars($label) . ': ';
    if (is_scalar($var)) {
        $out .= htmlspecialchars((string)$var);
    } elseif (is_null($var)) {
        $out .= 'NULL';
    } else {
        ob_start();
        var_dump($var);
        $out .= '
' . htmlspecialchars(ob_get_clean()) . '
'; } if ($return) return $out; echo $out; } // 使用 debug_var($pi, 'PI 常數'); debug_var($proteins, '蛋白質陣列'); $log = debug_var($_SERVER, 'SERVER 變數', true); // 取回字串寫入日誌 ?>

適用場景

  • 快速除錯:不想每次判斷型別再決定用 echo 還是 var_dump。
  • 統一輸出格式:可擴充加入時間戳、檔案/行號、CSS 樣式。
  • 開發環境輔助工具;正式環境請移除或關閉。
copyright © 萬盛學電腦網 all rights reserved