Ответ 1
Да, попробуйте обернуть его с помощью <pre>
, например:
echo '<pre>' . var_dump($variable) . '</pre>';
Когда я echo var_dump (переменная $_), я получаю одну длинную, обертывающую строку со всеми переменными и значениями, такими как
["kt_login_user"]=> string(8) "teacher1" ["kt_login_id"]=> string(3) "973" ["kt_campusID"]=> string(4) "9088" ["kt_positionID"]=> string(1) "5"
Есть ли способ, чтобы я мог показывать каждое значение в своей строке для удобства чтения? Что-то вроде этого:
["kt_login_user"]=> string(8) "teacher1"
["kt_login_id"]=> string(3) "973"
["kt_campusID"]=> string(4) "9088"
["kt_positionID"]=> string(1) "5"
Да, попробуйте обернуть его с помощью <pre>
, например:
echo '<pre>' . var_dump($variable) . '</pre>';
У меня обычно есть хорошая функция для обработки выходных данных массива, просто для того, чтобы немного при отладке.
function pr($data)
{
echo "<pre>";
print_r($data); // or var_dump($data);
echo "</pre>";
}
Затем просто назовите его
pr($array);
Или если у вас есть такой редактор, который сохраняет сниппеты, чтобы вы могли быстрее получить к ним доступ, вместо того, чтобы создавать функцию для каждого проекта, который вы создаете, или на каждой странице, требующей просто быстрого теста.
Для print_r
:
echo "<pre>", print_r($data, 1), "</pre>";
Для var_dump()
:
echo "<pre>", var_dump($data), "</pre>";
Я использую вышеуказанное с помощью PHP Storm. Я установил его как вкладку pr
.
Я также изучил эту проблему и не нашел правильного ответа. Это не работает для меня:
echo '<pre>' . var_dump($variable) . '</pre>';
Это не даст приятного отображения массива для меня, с разрывами строк (я использую Firefox 31.3.0)
Однако после некоторых экспериментов это решило проблему (сначала заметим, что php закрывается):
... ?> <pre><?php echo var_dump($variable) ?></pre> <?php ...
Это решает проблему и отображает хороший, легко читаемый массив для меня в моем браузере. Вы видите, как теги не обернуты в PHP; только часть echo var_dump.
Если вы установили XDebug, вы можете использовать его var_dump
replacement. Цитирование:
Xdebug заменяет функцию PHP var_dump() для отображения переменных. Версия Xdebug включает разные цвета для разных типов и ограничивает количество элементов массива/свойств объекта, максимальную глубину и длину строки. Есть еще несколько функций, связанных с переменным отображением.
Вероятно, вы захотите изменить несколько следующих настроек:
Существует ряд настроек, которые управляют выходом измененной функции var_dump() Xdebug: xdebug.var_display_max_children, xdebug.var_display_max_data и xdebug.var_display_max_depth. Эффект этих трех настроек лучше всего показан на примере. script ниже выполняется четыре раза, каждый раз с разными настройками. Вы можете использовать вкладки, чтобы увидеть разницу.
Но имейте в виду, что XDebug значительно замедлит ваш код, даже когда он просто загрузится. Нецелесообразно запускать на производственных серверах. Но эй, вы все равно не var_dumping на производственных серверах, не так ли?
var_export даст вам хороший результат. Примеры из документов:
$a = array (1, 2, array ("a", "b", "c"));
echo '<pre>' . var_export($a, true) . '</pre>';
Будет выводиться:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
Для меня правильный ответ был
echo '<pre>' . var_export($var, true) . '</pre>';
Так как var_dump($var)
и var_export($var)
не возвращают строку, вы должны использовать var_export($var, true)
, чтобы заставить var_export
возвращать результат как значение.
Использовать выходные буферы: http://php.net/manual/de/function.ob-start.php
<?php
ob_start();
var_dump($_SERVER) ;
$dump = ob_get_contents();
ob_end_clean();
echo "<pre> $dump </pre>";
?>
Еще один вариант: использовать буферизацию вывода и преобразовать все новые строки в элементах дампа в <br>
, например.
ob_start();
var_dump($_SERVER) ;
echo nl2br(ob_get_clean());
Вы можете нажать Ctrl + U, чтобы просмотреть исходный код. Большинство браузеров будут отключать вывод.
var_dump
- самый уродливый способ отладки.
Мне очень нравится var_export(). Если вам нравится код для копирования/вставки, попробуйте:
echo '<pre>' . var_export($data, true) . '</pre>';
Или даже что-то вроде этого для подсветки синтаксиса цвета:
highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
Оберните его в теги <pre>
, чтобы сохранить форматирование.
Для разработчиков, которым требуется что-то, что работает в источнике представления и CLI, особенно полезно при отладке модульных тестов.
echo vd([['foo'=>1, 'bar'=>2]]);
function vd($in) {
ob_start();
var_dump($in);
return "\n" . preg_replace("/=>[\r\n\s]+/", "=> ", ob_get_clean());
}
Урожайность:
array(1) {
[0] => array(2) {
'foo' => int(1)
'bar' => int(2)
}
}
Я сделал аналогичное решение. Я создал фрагмент, чтобы заменить "vardump" следующим:
foreach ($variable as $key => $reg) {
echo "<pre>{$key} => '{$reg}'</pre>";
}
var_dump($variable);die;
Ps: Я повторяю данные с последним var_dump, чтобы получить имя файла и строку
Сообщите мне, если это вам поможет.
Я не хотел останавливать использование var_dump($variable);die();
и использовать теги pre
, и циклы кажутся мне излишними, поэтому, поскольку я просматриваю дамп в браузере, я просто щелкаю правой кнопкой мыши на странице и выбираю Inspect (я использую Хром). Раздел "Элементы" инструментов разработчика показывает переменную в очень читаемом формате.