Intereting Posts
Ошибка: ожидаемая доктрина \ ORM \ Query \ Lexer :: T_WITH, получившая 'ON' Практика тестирования базы данных в Symfony2? Как изолировать? Yii: любое расширение для реализации встроенной карты google Как пройти каталог, рекурсивный возврат полного пути в PHP? Как найти самый большой массив из многомерного массива Где и почему мы используем __toString () в PHP? сеть прекрасна, но не может создать проект laravel и показать ошибку в команде Невозможно изменить информацию заголовка – заголовки, уже отправленные … WordPress Issue Отладка скрипта cron PHP SPL против массива: когда следует использовать SPL и когда мы должны использовать Array в PHP? PHP использует строку как оператор Ошибка Codeigniter «Не удается подключиться к серверу базы данных с помощью предоставленных настроек» Пользовательский порядок сортировки с SimplePie Проблемы с сохранением сеанса, получение PHP Неустранимая ошибка: Исключение выбрано без рамки стека Неизвестно в строке 0 Пользовательский агент SimpleXML

Альтернативный var_dump для PHP, который позволяет ограничить глубину вложенных массивов

Я пытаюсь использовать var_dump в командной строке с phpsh, чтобы получить отладочную информацию о некоторой переменной. Но переменная содержит очень глубоко вложенную структуру данных. Таким образом, использование var_dump по умолчанию выводит слишком много информации.

Я хочу ограничить уровень глубины вывода var_dump. Я обнаружил, что реализация var_dump XDebug позволяет ограничивать глубину, как описано здесь: http://www.giorgiosironi.com/2009/07/how-to-stop-getting-megabytes-of-text.html

К сожалению, я тоже не мог сделать эту работу. Я еще не знаю причину этого. Я ищу, если есть альтернативные варианты реализации var_dump.

Related of "Альтернативный var_dump для PHP, который позволяет ограничить глубину вложенных массивов"

Проверь это :

 function print_array($array,$depth=1,$indentation=0){ if (is_array($array)){ echo "Array(\n"; foreach ($array as $key=>$value){ if(is_array($value)){ if($depth){ echo "max depth reached."; } else{ for($i=0;$i<$indentation;$i++){ echo "&nbsp;&nbsp;&nbsp;&nbsp;"; } echo $key."=Array("; print_array($value,$depth-1,$indentation+1); for($i=0;$i<$indentation;$i++){ echo "&nbsp;&nbsp;&nbsp;&nbsp;"; } echo ");"; } } else{ for($i=0;$i<$indentation;$i++){ echo "&nbsp;&nbsp;&nbsp;&nbsp;"; } echo $key."=>".$value."\n"; } } echo ");\n"; } else{ echo "It is not an array\n"; } } 

Вот функция для этой проблемы:

 function slice_array_depth($array, $depth = 0) { foreach ($array as $key => $value) { if (is_array($value)) { if ($depth > 0) { $array[$key] = slice_array_depth($value, $depth - 1); } else { unset($array[$key]); } } } return $array; } с function slice_array_depth($array, $depth = 0) { foreach ($array as $key => $value) { if (is_array($value)) { if ($depth > 0) { $array[$key] = slice_array_depth($value, $depth - 1); } else { unset($array[$key]); } } } return $array; } 

Используйте эту функцию, чтобы нарезать массив на необходимую глубину, чем просто var_dump() или print_r() нарезанный массив 🙂

Я просто подключу эту альтернативу var_dump:

https://github.com/raveren/kint

очевидно, что ограничение по глубине поддерживается и включено по умолчанию. Вы можете, кроме того, преодолеть его на лету, префикс Kint::dump($var); с + + +Kint::dump($var); не будет усекать по глубине.

json_encode принимает аргумент глубины. Сделай это:

echo '<pre>' . json_encode($your_array, JSON_PRETTY_PRINT, $depth) . '</pre>';