Більш симпатична / інформативна альтернатива Var_dump в PHP? [зачинено]


130

У кожного порядного програміста PHP є print_rабо var_dumpобгортка, яку вони використовують, люблять і призначають клавіші швидкого доступу, чому б нам не поділитися нашими улюбленими .


39
я просто використовую echo '<pre>'; print_r ($ var); exit; я навіть не закриваю це. я здогадуюсь, я не пристойний
Funky Dude

Я відредагував посилання, щоб вказати на github, де я продовжую розробку Kint, і якщо у вас все ще є проблеми, будь ласка, повідомте мене будь-якими способами.
raveren

1
Гей, Кінт крутий! Це просто врятувало мені день.
István Ujj-Mészáros

2
Чому питання, яке на 100% рекламне повідомлення про програму, перетворюється на версію "я роблю власний var_dump ()" ?? Перше питання було б, чому рекламна продукція дозволена як питання.
м3нда

11
Тому що я зробив інструмент більш ніж через рік після того, як задав питання. Я не знаю, що вас турбує, я створив інструмент з відкритим вихідним кодом для ліній 10k + і постійно вдосконалюю його. Я дав власну відповідь на запитання - як це традиція в СО.
raveren

Відповіді:


70

Після повного запиту про це, я, нарешті, відкрив свою версію var_dump, Kint. Про це читайте на сторінці проекту або безпосередньо в github .

Ось скріншот:

кинт

Вибачте за плагін :)


EDIT: Я просто хотів би нагадати коментаторам, що це не форум підтримки, якщо у вас є проблеми / хочете функцію, будь ласка, подайте проблему . Підтримка, що вимагає коментарів, буде позначена для видалення.


мені довелося змінити розмір шрифту та прикрасити CSS-код, але приємна робота, мені це подобається ... що йде від довгого користувача
Krumo

1
які зміни ви внесли, якщо ви вважаєте, що це поліпшення, ви можете надіслати мені зміни на raveren@gmail.com
raveren

я звик до Крумо, і я хотів менших шрифтів, а також прикрасив код CSS. Нічого, що не можна назвати фактичним поліпшенням, більше схоже на стару звичку :)
Quamis

ну ідея полягала в тому, що css повинен бути стислий разом з js, щоб якомога менше перешкоджати фактичному виводу. Звичайно, було заплановано досить відступ створеного джерела, але в даний час я не маю часу присвячувати
Кінту

2
Як приклад, Kint показує захищені та приватні змінні, якщо ви скидаєте об'єкт, krumo цього не робить (тому що я вважаю, що тільки колишній використовує класи відображення). Взагалі кажучи, я знайшов Кінта вищим; хоча мені також довелося переробити css, щоб зробити його більш корисним (цей величезний шрифт не дуже добре працює, коли вивантажуєте тонни вкладених властивостей). О, і код за ним не безлад, те, чого не можна сказати про Крумо (вибачте, автор Крумо!)
Ман

45

Моїм перевагою є var_dumpфункція, передбачена розширенням Xdebug : просто встановіть розширення (легко, як на Windows, так і на Linux) , і ви var_dumpотримаєте кращий результат:

  • краще форматування
    • HTML
    • кольори
  • і у вас є варіанти налаштування кількості інформації, яка повинна відображатися

І швидкий скріншот:

xdebug


І, звичайно, Xdebug приносить безліч інших корисних речей, таких як віддалена налагодження (тобто графічна налагодження вашої програми PHP, наприклад, у PDC Eclipse) , профілювання, ...


1
Мені потрібно використовувати цей клас форматування xdebug у спільному хості. Чи є якийсь спосіб включити його до мого особистого проекту?
Анюль Рівас

1
Якщо ви не адміністратор (root) свого сервера, ви, швидше за все, не зможете встановити розширення PHP (я ніколи не бачив спільного сервісу хостингу, який би встановив його для встановлення розширень PHP) ; так що ні, ви не зможете використовувати Xdebug (як би там не було, встановлення його на виробничому сервері - це не дуже гарна ідея: це розширення налагодження, після закінчення) ; вам доведеться повернутися до впровадження функції змінного виводу на основі PHP (див. деякі інші відповіді)
Pascal MARTIN

1
так, мені просто знадобився клас, щоб надсилати собі деякий вихід, коли виникає помилка.
Анюль Рівас

34

Я написав своє: REF ( демо ):

r () вихід

Плани полягають у додаванні лише текстового відображення та відображенні інформації про вхідний вираз, як Kint ...


4
Хороша робота, дуже гарний інструмент
ssuperczynski

2
REF - дивовижний, барвистий, швидкий. Я ним користуюся постійно.
Марті Макгі

2
Чудовий інструмент, я просто перейшов на нього. Дякую!
Андріс

Кілька народів використовують композитора, ну ... не я. Якщо ви створите dllI, я використаю цю "налагодження". Дякую, і приємної роботи!
Алекс

27

Ось моя, яку я використовую вбудованою, дуже корисна:

$pretty = function($v='',$c="&nbsp;&nbsp;&nbsp;&nbsp;",$in=-1,$k=null)use(&$pretty){$r='';if(in_array(gettype($v),array('object','array'))){$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").'<br>';foreach($v as $sk=>$vl){$r.=$pretty($vl,$c,$in+1,$sk).'<br>';}}else{$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").(is_null($v)?'&lt;NULL&gt;':"<strong>$v</strong>");}return$r;};

echo $pretty($some_variable);

2
Любіть цю функцію - легко та зрозуміло, і я згадав дуже легко :)
derekdreery

Дякую. Я ним користуюся постійно. Слід реально вбудовуватися в PHP. Ви можете ввести власне форматування, використовуючи другий параметр. наприклад, echo $ pretty ($ some_variable, "-");
Гільєрмо Філіпс

7
Це прекрасно поєднує в собі найгірші функції print_r, var_dump та var_export. Жоден html не виходить, приймає лише один параметр, зависає при рекурсії, не може повернути висновок, і лише для того, щоб доповнити його, це абсолютно нечитабельно . Я не хочу бути мудаком, але коментарі просто роблять це ідеальним.
raveren

Дякую за Ваш коментар @Raveren. Якщо ви можете бути більш конкретними, то я вдосконалю свою відповідь.
Гільєрмо Філіпс

2
ІМО найкраще однолінійне рішення просто function pretty(){echo'<pre>';foreach(func_get_args()as $arg){ob_start();var_dump($arg);echo htmlentities(ob_get_clean())."\n#####\n#####\n\n";}die;}. Var_dump - дуже багатослівна функція, вона обробляє всі випадки речей PHPs (серед яких є ЛОТИ) і є на 100% стабільною, хоча і не такою, що читається. Але в кінці дня, якщо ви вважаєте, що ваша реалізація найкраща для вас, це те, що ви обов'язково повинні використовувати.
raveren

16

Ви шукаєте Krumo ( Попередження, сповіщення Chrome про зловмисне програмне забезпечення ).

Простіше кажучи, Krumo є заміною для print_r () і var_dump (). За визначенням, Krumo - це інструмент налагодження (спочатку для PHP4 / PHP5, тепер лише для PHP5), який відображає структуровану інформацію про будь-яку змінну PHP.


Це геніально! Дякую. +1
the_drow

2
коли я спробував це, він зламався. Я повідомив про це, але жодної відповіді та жодної нової версії
Мауг каже, що поверніть Моніку

2
@Pekka Посилання видає попередження про зловмисне програмне забезпечення в Chrome.
Тім Пост

Сьогодні krumo оновив цей хлопець github.com/mmucklo/krumo (але Kint може бути кращим, детальніше)
lolesque

9

Я люблю Firephp плюс firebug

  • Він записує інформацію про реєстрацію за допомогою заголовків, щоб не порушити AJAX.
  • Надає вам дуже гарне графічне зображення змінних / об'єктів, які ви реєструєте
  • Може відображати ім'я файлу та номер рядка, де відбувається кожен виступ журналу
  • Легкий у використанні у вашому проекті, або з процедурним, або з об'єктно-орієнтованим API


8

Моє (часткове) рішення для цього - просто додати таку функцію, як ця (за допомогою Google Chrome):

<?
function console_dump($value)
{ 
?>
<script>
    console.log(<? echo json_encode($value); ?>);
</script>
<?
}
?>

Натисніть Ctrl + Shift + J (відкриває консоль), і ви можете знайти там структуру JSON. Ще корисніше для симпатичного друку відповідей JSON, звичайно.


8

Повний приклад того, що я використовую ...

<pre>

<?php


//*********** Set up some sample data

$obj = new stdClass;
$obj->a=123;
$obj->pl=44;
$obj->l=array(31,32);

$options = array(
  'Orchestra'=>array(1=>'Strings', 8=>'Brass', 9=>$obj, 3=>'Woodwind', 16=>'Percussion'),
  2=>'Car',
  4=>'Bus',
  'TV'=>array(21=>'Only Fools', 215=>'Brass Eye', 23=>'Vic Bob',44=>null, 89=>false));


//*********** Define the function

function dump($data, $indent=0) {
  $retval = '';
  $prefix=\str_repeat(' |  ', $indent);
  if (\is_numeric($data)) $retval.= "Number: $data";
  elseif (\is_string($data)) $retval.= "String: '$data'";
  elseif (\is_null($data)) $retval.= "NULL";
  elseif ($data===true) $retval.= "TRUE";
  elseif ($data===false) $retval.= "FALSE";
  elseif (is_array($data)) {
    $retval.= "Array (".count($data).')';
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix [$key] = ";
      $retval.= dump($value, $indent);
    }
  }
  elseif (is_object($data)) {
    $retval.= "Object (".get_class($data).")";
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix $key -> ";
      $retval.= dump($value, $indent);
    }
  }
  return $retval;
}


//*********** Dump the data

echo dump($options);

?>
</pre>

Виходи ...

Array (4)
 [Orchestra] = Array (5)
 |   [1] = String: 'Strings'
 |   [8] = String: 'Brass'
 |   [9] = Object (stdClass)
 |   |   a -> Number: 123
 |   |   pl -> Number: 44
 |   |   l -> Array (2)
 |   |   |   [0] = Number: 31
 |   |   |   [1] = Number: 32
 |   [3] = String: 'Woodwind'
 |   [16] = String: 'Percussion'
 [2] = String: 'Car'
 [4] = String: 'Bus'
 [TV] = Array (5)
 |   [21] = String: 'Only Fools'
 |   [215] = String: 'Brass Eye'
 |   [23] = String: 'Vic Bob'
 |   [44] = NULL
 |   [89] = FALSE

1
Я змінив \ n на PHP_EOL, і це добре працює при використанні php з CMD вікна
iewebguy

7

Ось моя:

class sbwDebug
{
    public static function varToHtml($var = '', $key = '')
    {
        $type = gettype($var);
        $result = '';

        if (in_array($type, ['object', 'array'])) {
            $result .= '
        <table class="debug-table">
            <tr>
            <td class="debug-key-cell"><b>' . $key . '</b><br/>Type: ' . $type . '<br/>Length: ' . count($var) . '</td>
            <td class="debug-value-cell">';

            foreach ($var as $akey => $val) {
                $result .= sbwDebug::varToHtml($val, $akey);
            }
            $result .= '</td></tr></table>';
        } else {
            $result .= '<div class="debug-item"><span class="debug-label">' . $key . ' (' . $type . '): </span><span class="debug-value">' . $var . '</span></div>';
        }

        return $result;
    }
}

Стилі:

table.debug-table {
  padding: 0;
  margin: 0;
  font-family: arial,tahoma,helvetica,sans-serif;
  font-size: 11px;
}

td.debug-key-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

td.debug-value-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

div.debug-item {
  border-bottom: 1px dotted #AAAAAA;
}

span.debug-label {
  font-weight: bold;
}

2
Непогано насправді. Напевно, було б проголосовано більше, якби ти показав приклад результату.
Мауг каже, що повернемо Моніку

@acSlater працює для мене, вам просто потрібно створити sbwDebugклас, який він забув опублікувати, і помістити в нього функцію.
Dennis98

6

Нещодавно я розробив безкоштовне розширення для хромування (незавершене виробництво), щоб прикрасити мої варварські смітники без бібліотек, попередніх тегів і не встановлення для кожного додатка. Все зроблено за допомогою JavaScript та regEx. Все, що вам потрібно зробити, - це встановити розширення і ваше добро. Я також працюю над версією Firefox. Ось сторінка GitHub. Я сподіваюся, що незабаром він буде доступний на веб-магазинах Chrome і Firefox!

https://github.com/alexnaspo/var_dumpling

Ось приклад результату:

Приклад виведення


6
приємний чувак! щойно завантажили ваше розширення, і воно прекрасно працює! Дякую!
coryj

5
Чувак ... дякую. Я деякий час шукав щось подібне
широкоформатний

1
Нереально. Найкращий варіант поки!
Крістіан

Спробувавши з Firefox 15, він сказав, що він не сумісний. Будь-який шанс обійти це?
cyberfly

1
Це прекрасно, хоч би я знайшов його раніше!


2

Ці фантазійні бібліотеки чудові ... окрім накладних витрат. Якщо ви хочете простий, гарний var_dump, який приймає нескінченні параметри, спробуйте мою функцію. Він додає простий HTML. Атрибути даних також додаються, якщо ви використовуєте HTML5, нижчі версії просто ігнорують їх, але полегшать відкриття елемента в консолі браузера та отримання трохи більше інформації, якщо того, що ви бачите на екрані, недостатньо.

Макет дуже простий, без накладних витрат. Забезпечує тону інформації для кожного параметра, включаючи такі речі, як gettypeі навіть classім'я для відвалів об'єктів (включаючи XML). Це випробувано і правда, я його використовую роками.

function preDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;padding:0em 3em 1em 1em;"><legend><b>preDump: '.count($args).' Parameters Found.</b></legend>';
        foreach (func_get_args() as $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(preDump: )[0-9]+/', 'preDump: '.(count($args)-1), $sb); continue; }
            $sb .= '<pre data-type="'.gettype($arg).'"';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                    $sb .= ' data-dump="json_encode"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= json_encode($arg);
                    break;
                case "string":
                    $sb .= ' data-dump="echo"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= $arg;
                    break;
                default:
                    $sb .= ' data-dump="var_dump"';
                    if (is_object($arg)) $sb .= 'data-class="'.get_class($arg).'"';
                    $sb .= '><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')';
                    if (is_object($arg)) $sb .= ' ['.get_class($arg).']';
                    $sb .= '</b></p><p>';
                    ob_start();
                    var_dump($arg);
                    $sb .= ob_get_clean();
                    if (ob_get_length()) ob_end_clean();
            }
            $sb .= '</p></pre>';
        }
        $sb .= '</fieldset></div>';
    }
    else {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;"><legend><b>preDump: [ERROR]</b></legend><h3>No Parameters Found</h3></fieldset></div>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

І якщо ви використовуєте Codeigniter, додайте його також і ваш CI НАЙКРАЙНО ПРОСТО. По-перше, перейдіть на сайт application/config/autoload.phpі переконайтеся, що helper 'string'включено

$autoload['helper'] = array( 'string' ); 

Потім просто піти створити файл з ім'ям MY_string_helper.phpв application/helpersі простий вставки функції в типовому ifзаяві для перевірки існування.

<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
    if (!function_exists('preDump')) {
        function preDump() {
            ...
        }
    }
//  DON'T CLOSE PHP

| АБО |, якщо ви хочете піти в іншому напрямку.

Наступний фрагмент такий же, як і вище, за винятком того, що відображатиме ваші змінні в консолі браузера. Іноді це може спростити налагодження викликів sql об’єктів та інших викликів масиву та об’єктів, де вам не вистачає ключового імені чи будь-чого іншого.

function consoleDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<script type="text/javascript">console.log("<" + new Array('.(count($args) < 10 ? '49': '48').').join("-") + "[consoleDump: '.count($args).' items]" + new Array(50).join("-") + ">"); console.log([';

        foreach (func_get_args() as $i => $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(consoleDump: )[0-9]+/', 'consoleDump: '.(count($args)-1), $sb); continue; }
            $sb .= '{ "type": "'.gettype($arg).'", ';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                case "string":
                    $sb .= '"value": '.json_encode($arg);
                    break;
                default:
                    $sb .= '"value": '.json_encode($arg);
                    if (is_object($arg) || is_array($arg)) $sb .= ', "count": '.json_encode(count((array)$arg));
                    if (is_object($arg)) $sb .= ', "objectClass": "'.get_class($arg).'"';
            }
            $sb .= '}';
            if ($i < count($args)-1) $sb .= ', ';
        }
        $sb .= ']); console.log("<" + new Array(120).join("-") + ">"); </script>';
    }
    else {
        $sb = '<script type="text/javascript">console.log("<" + new Array(120).join("-") + ">");console.log("consoleDump: [ERROR] No Parameters Found");console.log("<" + new Array(120).join("-") + ">");</script>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

Працює з усім!

consoleDump($simpXMLvar, $_SESSION, TRUE, NULL, array( 'one' => 'bob', 'two' => 'bill' ), (object)array( 'one' => 'bob', 'two' => 'bill' ));


<------------------------------------------------[consoleDump: 6 items]------------------------------------------------->
[Object, Object, Object, Object, Object, Object] 
// This drops down to show your variables in JS objects, like:
    0: Object
        count: 4
        objectClass: "SimpleXMLElement"
        type: "object"
        value: Object
        __proto__: Object
        // ...etc...
<-----------------------------------------------------------------------------------------------------------------------> 

1
Чому варто турбуватися про незначне зниження продуктивності інструменту розвитку? Ця функція буквально echo '<pre>';var_dump($var);echo '</pre>';плюс деякий текст, що додає нульову вартість.
raveren

@ Raveren yea, крім preDump('value', TRUE, array( 'bob => 'bill' ), (object)array( 'bob => 'bill' )' is quick and easy and gives a nice layout visually in the browser that shows each variable passed in it's own "area" with a type label, thus making debugging quick and easy. And since it's a snippet i keep in my IDE's toolbox, i can recall it with ease on any needed page or while working with any library. But sure, it's just an відлуння 'до'; var_dump` з деякими simple htmlнавколо нього, а не 0-додаючим текст. lol kik. Якщо вам це не подобається, не використовуйте його. Просто пропозиція.
SpYk3HH

@Raveren І якщо вам це сподобалось ... ви дуже сподобаєтесь моєму оновленню: P
SpYk3HH

1

PHP Array Beautifier Цей простий інструмент приймає масив або вихідний об'єкт у PHP, наприклад, оператор print_r () та форматує його в кольоровому кодуванні для легкого зчитування даних. http://phillihp.com/toolz/php-array-beautifier/


не працює з var_dump виведенням, розбиває котирування, виглядає надзвичайно заплутано для великих скидів.
raveren

1

Ще одна домашня версія:

http://github.com/perchten/neat_html

Мені подобається вважати, що це досить гнучко. Він не спрямований на конкретне вихідне середовище, але має купу необов'язкових аргументів, за допомогою яких можна вказати, чому змінювати вихід / друк чи поведінку, а також деякі стійкі налаштування.




1

Якщо ви маєте справу з дуже великими масивами в PHP, ця функція може допомогти:

function recursive_print ($varname, $varval) {
  if (! is_array($varval)):
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
  else:
    print $varname . " = array();<br>\n";
    foreach ($varval as $key => $val):
      recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
    endforeach;
  endif;
}

В основному він скидає весь масив, де кожен елемент знаходиться в окремому рядку, що вигідно знайти правильні повні шляхи для певних елементів.

Приклад виводу:

$a = array();
$a[0] = 1;
$a[1] = 2;
$a[2] = array();
$a[2][0] = 'a';
$a[2][1] = 'b';
$a[2][2] = 'c';

Див.: Як експортувати масив PHP, де кожна пара ключ-значення знаходиться в окремому рядку?


1

Я здивований, що ніхто не згадав про найпростіший (хоч і не дуже гарний) код. Якщо ви просто хочете отримати читабельний вихід (без кольорів чи відступів), простий <pre>навколо var_dumpроботи, як у:

echo "<pre>";
var_dump($myvariable);
echo "</pre>";

Не можна отримати набагато нижчі накладні витрати, ніж це!


0

Я написав невеликий клас, схожий на Крумо, але набагато простіше вставити в додаток.

Ось посилання: https://github.com/langpavel/PhpSkelet/blob/master/Classes/Debug.php

І ось зразок виводу: http://langpavel.php5.cz/debug_sample.html


Демонстрація зламана, хоча код доступний на GitHub
Мауг каже, що відновити Моніку

0

Моєю перевагою є налагодження з https://github.com/hazardland/debug.php, яка є бібліотекою, що містить лише одну функцію, названу як налагодження (Ви можете просто скопіювати цю функцію у вашому проекті чи у своїй бібліотеці) . Типовий вихідний файл debug () html виглядає так:

введіть тут опис зображення

Але ви можете виводити дані у вигляді простого тексту з такою ж функцією (з 4 проміжками з відступом), як ця (і навіть заносити їх у файл, якщо потрібно):

string : "Test string"
boolean : true
integer : 17
float : 9.99
array (array)
    bob : "alice"
    1 : 5
    2 : 1.4
object (test2)
    another (test3)
        string1 : "3d level"
        string2 : "123"
        complicated (test4)
            enough : "Level 4"

0

TVarDumper

Це чудовий інструмент, який призначений замінити помилкову функцію PHP var_dumpі print_r, оскільки він може правильно ідентифікувати рекурсивно посилаються об’єкти у складній структурі об'єктів. Він також має рекурсивний контроль глибини, щоб уникнути невизначеного рекурсивного відображення деяких своєрідних змінних.

Див: TVarDumper.php.


Для інших альтернативних рішень, які надають більше переваг перед var_dumpта print_rможуть підтримувати кругові посилання, будь ласка, перевірте: Використання print_r та var_dump з круговою посиланням .


Для отримання додаткових ідей перевірте також: Як ви налагоджуєте сценарії PHP?


0

Моє, є більш простим, для мене я не маю багато знань / часу, щоб змінити інфраструктуру, встановити xdebug, і т. Д. І т.д.

І в інших випадках, для простого веб-сайту WP, наприклад, вам не потрібно багато

Тому я використовую:

highlight_string("\n<?" . var_export($var, true) . "?>\n");

які мені дуже допомагають.

а тому, що я віддаю перевагу середовищу DevConsole, я використовую цю дивовижну, але просту функцію:

https://codeinphp.github.io/post/outputting-php-to-browser-console/

Маленький твіст:

<?php 

/**
 * Logs messages/variables/data to browser console from within php
 *
 * @param $name: message to be shown for optional data/vars
 * @param $data: variable (scalar/mixed) arrays/objects, etc to be logged
 * @param $jsEval: whether to apply JS eval() to arrays/objects
 *
 * @return none
 * @author Sarfraz
 */
function logConsole($name, $data = NULL, $jsEval = FALSE)
{
     if (! $name) return false;

     $isevaled = false;
     $type = ($data || gettype($data)) ? 'Type: ' . gettype($data) : '';

     if ($jsEval && (is_array($data) || is_object($data)))
     {
          $data = 'eval(' . preg_replace('#[\s\r\n\t\0\x0B]+#', '', json_encode($data)) . ')';
          $isevaled = true;
     }
     else
     {
          $data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
     }

     # sanitalize
     $data = $data ? $data : '';
     $search_array = array("#'#", '#""#', "#''#", "#\n#", "#\r\n#");
     $replace_array = array('"', '', '', '\\n', '\\n');
     $data = preg_replace($search_array,  $replace_array, $data);
     $data = ltrim(rtrim($data, '"'), '"');
     $data = $isevaled ? $data : ($data[0] === "'") ? $data : "'" . $data . "'";

$js = <<<JSCODE
\n<script>
// fallback - to deal with IE (or browsers that don't have console)
if (! window.console) console = {};
console.log = console.log || function(name, data){};
// end of fallback

console.log('===== PHP Dump =====');
console.log('$name');
console.log('$type');
console.log($data);
console.log('===== / PHP Dump =====');
console.log('\\n');
</script>
JSCODE;

     echo $js;
} # end logConsole

0

Інший варіант - це

composer require symfony/var-dumper --save-dev

Тоді у вашому файлі ви просто використовуєте, dump($var) і ви отримаєте такий результатвведіть тут опис зображення


0

Мені довелося додати ще одну відповідь, тому що я не дуже хотів проходити кроки в інших рішеннях. Це надзвичайно просто і не вимагає розширень, включає в себе і т.д., і це те, що я віддаю перевагу. Це дуже легко і дуже швидко.

Спочатку просто json_enкодуйте цю змінну:

echo json_encode($theResult);

Скопіюйте результат, який ви отримаєте в редакторі JSON за адресою http://jsoneditoronline.org/, просто скопіюйте його на ліву бічну панель, натисніть « Копіювати»> і він досить друкує JSON у дуже гарному форматі дерева.

У кожного свої, але сподіваємось, це допомагає деяким іншим мати ще один приємний варіант! :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.