php var_dump用法 - 讓var_dump看起來很漂亮




to string (9)

使用預先格式化的HTML代碼

echo '<pre>';
var_dump($data);
echo '</pre>';

我有一個簡單的$_GET[]查詢var集,用於在從數據庫中查詢查詢時顯示測試數據。

<?php if($_GET['test']): ?>
  <div id="test" style="padding: 24px; background: #fff; text-align: center;">  
    <table>
      <tr style="font-weight: bold;"><td>MLS</td></tr>
      <tr><td><?php echo KEY; ?></td></tr>
      <tr style="font-weight: bold;"><td>QUERY</td></tr>
      <tr><td><?php echo $data_q; ?></td></tr>
      <tr style="font-weight: bold;"><td>DATA</td></tr>
      <tr><td><?php var_dump($data); ?></td></tr>
    </table>    
</div>
<?php endif; ?>

當我做var_dump ,正如預期的那樣,這個大數組字符串被全部沖在一起。 是否有一種方法可以添加換行符,至少對於這一點,或者以更具可讀性的方式顯示var_dump ? 我對jQuery的建議是在發布之後處理字符串的。



這裡是我的函數有一個漂亮的var_dump。 結合Xdebug ,我們可以更好地了解我們傾銷的內容。

我改進了一些Xdebug的顯示(給一些空間,值之間的分隔符,包裝長變量等)。

當你調用函數時,你可以設置標題,背景和文本顏色來區分頁面中的所有var_dump。

或不 ;)

/**
 * Pretty var_dump 
 * Possibility to set a title, a background-color and a text color
 */ 
function dump($data, $title="", $background="#EEEEEE", $color="#000000"){

    //=== Style  
    echo "  
    <style>
        /* Styling pre tag */
        pre {
            padding:10px 20px;
            white-space: pre-wrap;
            white-space: -moz-pre-wrap;
            white-space: -pre-wrap;
            white-space: -o-pre-wrap;
            word-wrap: break-word;
        }

        /* ===========================
        == To use with XDEBUG 
        =========================== */
        /* Source file */
        pre small:nth-child(1) {
            font-weight: bold;
            font-size: 14px;
            color: #CC0000;
        }
        pre small:nth-child(1)::after {
            content: '';
            position: relative;
            width: 100%;
            height: 20px;
            left: 0;
            display: block;
            clear: both;
        }

        /* Separator */
        pre i::after{
            content: '';
            position: relative;
            width: 100%;
            height: 15px;
            left: 0;
            display: block;
            clear: both;
            border-bottom: 1px solid grey;
        }  
    </style>
    ";

    //=== Content            
    echo "<pre style='background:$background; color:$color; padding:10px 20px; border:2px inset $color'>";
    echo    "<h2>$title</h2>";
            var_dump($data); 
    echo "</pre>";

}

最好的什麼和最簡單的方法來獲得漂亮的var_dump是使用xDebug(必須為任何PHP開發)Debian的方式安裝

在console中: apt-get install php-xdebug之後,你應該打開php.ini(取決於你使用的是哪個堆棧),因為它是/etc/php/7.0/fpm/php.ini

搜索display_errors

設置相同 - > display_errors = On

在同一個文件中檢查html_errors稍微低一點,它也必須是On

保存並退出

打開/etc/php/7.0/fpm/conf.d/20-xdebug.ini

並添加到最後:```xdebug.cli_color = 1

``保存並退出。

xdebug的許多其他可用選項和文檔可以在這裡創建。

https://xdebug.org/docs/

祝好運並玩得開心點 !!!

Result


使用

echo nl2br(var_dump());

這應該工作^^


你也可以試試Xdebug以獲得更多信息的var轉儲


試試php的xdebug擴展。

例:

<?php var_dump($_SERVER); ?>

輸出:


我已經補充了@AbraCadaver的答案。 我已經包含了一個JavaScript腳本,它將刪除PHP的開始和結束標記。 我們將有更乾淨更漂亮的轉儲。

也可能是這樣的人。

function dd($data){
  highlight_string("<?php\n " . var_export($data, true) . "?>");
  echo '<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>';
  die();
}

結果之前:

結果之後:

現在我們沒有php開始和結束標記


你也可以嘗試使用serialize()函數,有時它對於調試puprposes非常有用。





php arrays var-dump