Я работаю над сайтом drupal, и при отладке мне всегда приходится читать длинные вложенные массивы. В результате большая часть моей жизни потрачена на использование клавиш со стрелками, возврата и табуляции, чтобы разбить 1000+ символьных строк во вложенный читаемый формат.
Для разработчиков drupal я не могу использовать devel dsm (), поскольку я работаю с многоэтапными формами # ahah / # ajax, и я могу выводить массивы только в журнал ошибок, а не на экран.
Наглядный пример:
Зло:
array ('form_wrapper' => array ('#tree' => true, '#type' => 'fieldset', '#prefix' => '', '#suffix' => '', '#value' = > '', 'name' => array ('#type' => 'textfield', '#title' => NULL, '#size' => 60, '#maxlength' => 60, '#required' = > false, '#description' => NULL, '#attributes' => array ('placeholder' => 'Email',), '#post' => array ('form_wrapper' => array ('name' => '', 'pass' => '',),...
Хороший:
array (
'form_wrapper' => array (
'#tree' => true,
'#type' => 'fieldset',
'#prefix' => '<div>',
'#suffix' => '</div>',
'#value' => '',
'name' => array (
'#type' => 'textfield',
'#title' => NULL,
'#size' => 60,
'#maxlength' => 60,
'#required' => false,
'#description' => NULL,
'#attributes' => array (
'placeholder' => 'Email',
),
Изменить : извините, под «не выводить на экран» я имел в виду через системные сообщения drupal, где можно выводить массивы в интерактивном, вложенном формате (используя devel.module).
Ответы:
Если вам нужно записать ошибку в журнал ошибок Apache, вы можете попробовать следующее:
error_log( print_r($multidimensionalarray, TRUE) );
источник
print_r
(строчные буквы).print_R
Действительно ли работает?\n
а не фактические.http://php.net/manual/en/function.print-r.php Эту функцию можно использовать для форматирования вывода,
$output = print_r($array,1);
$output
является строковой переменной, ее можно регистрировать, как и любую другую строку. В чистом php вы можете использоватьtrigger_error
Ex.
trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
если вам нужно отформатировать его также в html, вы можете использовать
<pre>
тегисточник
if you need to format it also in html
trigger_error
он ограничивает сообщения максимальной длиной 1024 или чем-то подобным. Делаем некоторые длинныеvar_exports
/print_r
обрезанные струны. Это полезно для простых конструкций.Простые вещи:
Использование
print_r
,var_dump
илиvar_export
должны делать это очень хорошо , если вы посмотрите на результат в режиме просмотра источника не находится в режиме HTML или как @Joel Ларсон сказал , что если вы обернуть все в<pre>
теге.print_r
лучше всего подходит для удобочитаемости, но не выводит нулевые / ложные значения.var_dump
лучше всего подходит для проверки типов значений и длины, а также значений null / false.var_export
похож на,var_dump
но его можно использовать для получения сброшенной строки.Формат, возвращаемый любым из них, имеет правильный отступ в исходном коде и
var_export
может использоваться для ведения журнала, поскольку его можно использовать для возврата сброшенной строки.Продвинутые вещи:
Используйте плагин xdebug для PHP, который печатает
var_dump
s как строки в формате HTML, а не как формат необработанного дампа, а также позволяет вам предоставить пользовательскую функцию, которую вы хотите использовать для форматирования.источник
var_export
позволяет вернуть строку.В модуле Devel Drupal есть и другие полезные функции, в том числе функции печати форматированных массивов и объектов в файлы журналов. См. Руководство по адресу http://ratatosk.net/drupal/tutorials/debugging-drupal.html
источник
Это поможет тебе
echo '<pre>';
$output = print_r($array,1);
echo '</pre>';
РЕДАКТИРОВАТЬ
использование
echo '<pre>';
бесполезно, ноvar_export($var);
сделает то, чего вы ожидаете.источник
Вы должны иметь возможность использовать var_dump () внутри тега pre. В противном случае вы можете изучить использование библиотеки, например dump_r.php: https://github.com/leeoniya/dump_r.phpМое решение неверное. OP искал решение, отформатированное с пробелами для хранения в файле журнала.
Решением может быть использование буферизации вывода с помощью var_dump, а затем str_replace () всех вкладок с пробелами для форматирования в файле журнала.
источник
Мне просто интересно, почему никто не использует и не рекомендует способ, которым я предпочитаю отлаживать массив:
Рядом с моим браузером я
tail
регистрирую свой сервер в консоли, например.tail -f /var/log/apache2/error.log
источник
Синтаксис
print_r(variable, return);
переменная Обязательно . Задает переменную для возврата информации о
return Необязательно . Если установлено значение true, эта функция будет возвращать информацию (а не печатать ее). По умолчанию false
пример
error_log( print_r(<array Variable>, TRUE) );
источник