При создании значений переменной PHP var_dump() отображается одна строка за значение

Когда я 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"

Ответ 1

Да, попробуйте обернуть его с помощью <pre>, например:

echo '<pre>' . var_dump($variable) . '</pre>';

Ответ 2

У меня обычно есть хорошая функция для обработки выходных данных массива, просто для того, чтобы немного при отладке.

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.

Ответ 3

Я также изучил эту проблему и не нашел правильного ответа. Это не работает для меня:

echo '<pre>' . var_dump($variable) . '</pre>';

Это не даст приятного отображения массива для меня, с разрывами строк (я использую Firefox 31.3.0)

Однако после некоторых экспериментов это решило проблему (сначала заметим, что php закрывается):

... ?> <pre><?php echo var_dump($variable) ?></pre> <?php ...

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

Ответ 4

Если вы установили 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 на производственных серверах, не так ли?

Ответ 5

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',
  ),
)

Ответ 6

Для меня правильный ответ был

echo '<pre>' . var_export($var, true) . '</pre>';

Так как var_dump($var) и var_export($var) не возвращают строку, вы должны использовать var_export($var, true), чтобы заставить var_export возвращать результат как значение.

Ответ 7

Использовать выходные буферы: 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());

Ответ 8

Вы можете нажать Ctrl + U, чтобы просмотреть исходный код. Большинство браузеров будут отключать вывод.

var_dump - самый уродливый способ отладки.

Ответ 9

Мне очень нравится var_export(). Если вам нравится код для копирования/вставки, попробуйте:

echo '<pre>' . var_export($data, true) . '</pre>';

Или даже что-то вроде этого для подсветки синтаксиса цвета:

highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");

Ответ 10

Оберните его в теги <pre>, чтобы сохранить форматирование.

Ответ 11

Для разработчиков, которым требуется что-то, что работает в источнике представления и 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)
  }
}

Ответ 12

Я сделал аналогичное решение. Я создал фрагмент, чтобы заменить "vardump" следующим:

foreach ($variable as $key => $reg) {
    echo "<pre>{$key} => '{$reg}'</pre>";
}
var_dump($variable);die;

Ps: Я повторяю данные с последним var_dump, чтобы получить имя файла и строку

Итак: введите описание изображения здесь Стало следующим: введите описание изображения здесь

Сообщите мне, если это вам поможет.

Ответ 13

Я не хотел останавливать использование var_dump($variable);die(); и использовать теги pre, и циклы кажутся мне излишними, поэтому, поскольку я просматриваю дамп в браузере, я просто щелкаю правой кнопкой мыши на странице и выбираю Inspect (я использую Хром). Раздел "Элементы" инструментов разработчика показывает переменную в очень читаемом формате.