Есть ли способ форматирования данных `var_dump` или` print_r`? [Дубликат]

.equals() сравнивает данные в классе (при условии, что функция реализована). == сравнивает местоположения указателя (расположение объекта в памяти).

== возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals() возвращает true, если два объекта содержат одни и те же данные equals() Versus == в Java

Это может вам помочь.

91
задан AbraCadaver 9 November 2017 в 22:58
поделиться

12 ответов

Мне очень нравится var_export(). Если вам нравится код для копирования / вставки, попробуйте:

echo '<pre>' . var_export($data, true) . '</pre>';

Или даже что-то вроде этого для подсветки синтаксиса цвета:

highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
245
ответ дан AbraCadaver 16 August 2018 в 03:05
поделиться
  • 1
    Обратите внимание, что echo, var_export и highlight_string - все php-функции и должны находиться внутри блока <?php ?>. Да, даже если строка функции highlight_string имеет & lt;? Php? & Gt; пара внутри, пара нужна и снаружи. – BeowulfNode42 10 January 2017 в 07:21
  • 2
    Мне нравится это решение! – Syno 20 July 2018 в 10:56

Вот моя функция, чтобы иметь довольно var_dump.

Я немного улучшил отображение 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>";

}
0
ответ дан Arno 16 August 2018 в 03:05
поделиться

Вы можете использовать этот debugVar() вместо var_dump()

. Выйти: https://github.com/E1NSER/php-debug-function

1
ответ дан Arun Vinoth 16 August 2018 в 03:05
поделиться

Не совсем var_dump, но полезно: http://dbug.ospinto.com/

-2
ответ дан BartekR 16 August 2018 в 03:05
поделиться

Использовать

echo nl2br(var_dump());

Это должно работать ^^

-8
ответ дан Christine 16 August 2018 в 03:05
поделиться
  • 1
    var_dump ничего не возвращает, он выводит напрямую. – AbraCadaver 1 August 2015 в 18:17
  • 2
    echo nl2br(var_export($var, true)); может работать ... – Nathan Arthur 6 October 2016 в 17:56

Попробуйте расширение xdebug для php.

Пример:

<?php var_dump($_SERVER); ?>

Выходы:

enter image description here [/g1]

33
ответ дан Latheesan 16 August 2018 в 03:05
поделиться
  • 1
    Имейте в виду, xdebug делает ALLOT больше, чем просто красивый var_dump :) – Latheesan 6 November 2013 в 17:55
  • 2
    Раньше я это делал при выполнении var_dump, но теперь, когда у меня есть wampserver 2.5 с php 5.5.12, я вижу, что он неформатирован. Почему я мог видеть вашу фотографию раньше, не устанавливая ничего, кроме wampserver? – Limon 28 November 2014 в 22:30
  • 3
    Это определенно очень сексуально. Не уверен, почему это не помечено как правильное решение, но вы можете дать более подробную информацию об установке. В окнах это было просто extension=php_xdebug.dll, а не zend_extension=/some/really/long/specific/path/xdebug.so – Kraang Prime 3 June 2015 в 15:37

Я написал функцию (debug_display), которая умеет печатать, массивы, объекты и информацию о файле.

<?php
function debug_display($var,$show = false) {
    if($show) { $dis = 'block'; }else { $dis = 'none'; }
    ob_start();
    echo '<div style="display:'.$dis.';text-align:left; direction:ltr;"><b>Idea Debug Method : </b>
        <pre>';
    if(is_bool($var)) {
        echo $var === TRUE ? 'Boolean(TRUE)' : 'Boolean(FALSE)';
    }else {
        if(FALSE == empty($var) && $var !== NULL && $var != '0') {
            if(is_array($var)) {
                echo "Number of Indexes: " . count($var) . "\n";
                print_r($var);
            } elseif(is_object($var)) {
                print_r($var);
            } elseif(@is_file($var)){
                $stat = stat($var);
                $perm = substr(sprintf('%o',$stat['mode']), -4);
                $accesstime = gmdate('Y/m/d H:i:s', $stat['atime']);
                $modification = gmdate('Y/m/d H:i:s', $stat['mtime']);
                $change = gmdate('Y/m/d H:i:s', $stat['ctime']);
                echo "
    file path : $var
    file size : {$stat['size']} Byte
    device number : {$stat['dev']}
    permission : {$perm}
    last access time was : {$accesstime}
    last modified time was : {$modification}
    last change time was : {$change}
    ";
            }elseif(is_string($var)) {
                print_r(htmlentities(str_replace("\t", '  ', $var)));
            }  else {
                print_r($var);
            }
        }else {
            echo 'Undefined';
        }
    }
    echo '</pre>
    </div>';
    $output = ob_get_contents();
    ob_end_clean();
    echo $output;
    unset($output);
}
-2
ответ дан Michael Mior 16 August 2018 в 03:05
поделиться
  • 1
    Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - Из обзора – Jenny O'Reilly 11 July 2018 в 13:14

Лучший способ и самый простой способ получить хороший var_dump - использовать xDebug (должен иметь для любого php dev) Debian way install

В консоли: 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/

Удачи и получайте удовольствие !!!

Результат

1
ответ дан Moris Finkel 16 August 2018 в 03:05
поделиться

Я добавил дополнение к ответам @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();
}

Результат до:

Может быть, / g5]

Результат после:

Теперь у нас нет php start и close tag

4
ответ дан Muhammad Awais 16 August 2018 в 03:05
поделиться

Использовать предварительно отформатированный HTML-код

echo '<pre>';
var_dump($data);
echo '</pre>';
8
ответ дан rollstuhlfahrer 16 August 2018 в 03:05
поделиться

Вы можете попробовать также Xdebug для более информативных дампов var

0
ответ дан srdjans 16 August 2018 в 03:05
поделиться
0
ответ дан WoodrowShigeru 6 September 2018 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: