Лучший способ отладки массива с помощью PHP
каков наилучший способ отладки массива, чтобы вы могли видеть, какие значения хранятся и в каких ключах в массиве они хранятся? Также, как вы делаете это так, чтобы было проще смотреть визуально, чтобы вам не нужно было продолжать просматривать массив для ключа, и это значение в одной строке ?
EDIT:
теперь я понимаю, что print_r()
- не единственное решение для отладки массивов. Так что если у вас есть другие решения, которые были бы прекрасны, а также узнать больше об отладке.
EDIT2:
Ayesh K, ITroubs и Роберт Росас упомянули как Krumo и Кинт это далеко, если у вас есть другие, не стесняйтесь размещать их. Также благодаря Raveren для написания Kint!
10 ответов
все говорит о print_r
который находится в ядре и работает очень хорошо.
Но когда дело доходит до просмотра большого массива print_r()
приводит меня в бешенство, сужая выход.
дать попробовать krumo. Он красиво печатает массив с визуальным форматированием, нажмите-разверните, а также дает вам точный вызов ключа массива, который вы можете просто скопировать и вставить.
<?php
krumo($my_array);
?>
Itroubs указано Кинт как лучшая альтернатива Krumo. (Спасибо ITroubs!)
каждый разработчик PHP должен иметь функцию для этого. Моя функция ниже:
function r($var){
echo '<pre>';
print_r($var);
echo '</pre>';
}
чтобы красиво печатать данные, просто позвоните r($data);
. Если вы хотите больше деталей, вы можете использовать эту функцию:
function d($var){
echo '<pre>';
var_dump($var);
echo '</pre>';
}
вот моя...
демо: http://o-0.me/dump_r/
РЕПО: https://github.com/leeoniya/dump_r.php
композитор: https://packagist.org/packages/leeoniya/dump-r
при необходимости вы можете изменить его с помощью css.
Я используем var_dump....теперь, если вы хотите еще, проверьте этот сайт:
http://raveren.github.io/kint/
и
рекомендуется визуально видеть значения / Ключи в массиве следующим образом:
echo "<pre>".print_r($array,TRUE)."</pre>";
true требуется, поскольку он изменяет его в строку, вывод будет:
array(
key1 => value,
key2 => value,
...
)
быстрое решение: откройте исходный код страницы и вы увидите print_r
's выход в несколько строк и идеально отступом.
print_r не один (он использует \n
как новая строка, а не <br>
). Добавить <pre>...</pre>
вокруг него, чтобы показать несколько строк.
print_r()
использует \n
в качестве разделителя строк. Использовать <pre>
теги или просмотреть исходный код страницы, чтобы она выглядела правильно. (на Windows, Linux работает с \n
)
мне лично никогда не нравились все эти причудливые вещи, я использую print_r()
потому что он не подавляющий, и он дает достаточно информации.
вот мой:
if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] == 'Debug')
{
echo '<strong><i>FILE : </i></strong>'.__FILE__.'<strong> <i>LINE : </i></strong>'.__LINE__.'<pre>';
print_r($var);
echo '</pre>';
die;
}
это утверждение if должно гарантировать, что другие люди не видят, что вы напечатали. Существует хорошее дополнение для Mozila-Firefox и Google Chrome под названием "User agent switcher", где вы можете создавать свои пользовательские агенты. Поэтому я создаю пользовательский агент под названием "Debug" , и когда я работаю, я меняю пользователя агент.
если я использую агент пользователя по умолчанию, ничего не произойдет, и страница не будет die;
, только вы и люди, которые также изменяют пользовательский агент на "Debug", увидите напечатанную переменную. Это полезно, если вы хотите отладить проблему в рабочей среде, и вы не хотите, чтобы страница die;
и это тоже хорошо, если другие люди также работают над проектом и вы не хотите прерывать их, убивая странице.
затем я откликаюсь на текущий файл и строку, это полезно, когда вы работаете в рамках или CMS или любого другого большого проекта с тысячами файлов и папок, и во время отладки, если вы можете забыть, где вы набрали die;
или exit;
и вы должны помнить, где вы были и какие переменные вы напечатали.
Я использую IDE NetBeans для разработки PHP, у меня есть макрос, поэтому, когда вы выбираете переменную и используете ее, она вставит этот инструмент отладки в текстовый редактор и поместит выбор внутри print_r();
функция. Если вы также используете NetBeans, вы можете использовать этот макрос:
cut-to-clipboard
"if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] == 'Debug')"
insert-break
"{"
insert-break
"echo '<strong><i>FILE : </i></strong>'.__FILE__.'<strong> <i>LINE :</i></strong>'.__LINE__.'<pre>';"
insert-break
"print_r("
paste-from-clipboard
remove-line-begin
");"
insert-break
"echo '</pre>';"
insert-break
"die;"
вам просто нужно выбрать $variable
и использовать макрос.