【问题标题】:Making PHP var_dump() values display one line per value使 PHP var_dump() 值每个值显示一行
【发布时间】:2012-04-24 08:32:09
【问题描述】:

当我回显 var_dump($_variable) 时,我会得到一条长长的环绕行,其中包含所有变量和值,例如

["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"

【问题讨论】:

  • 你试过在你的var_dump()周围加上一个<pre>标签吗?

标签: php line var-dump


【解决方案1】:

是的,尝试用<pre> 包裹它,例如:

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

【讨论】:

  • 我们认为我们是唯一这样做的人!
  • 我更喜欢 print_r() 虽然对于数组
  • 谢谢,但我想也许还有另一种方法可以做到这一点,而不是每次都使用
     标签
  • 如果有其他方法?当然,您可以根据需要使用 nl2br,但为什么会更好?
  • 32 票支持错误答案...var_dump does not return anything, it outputs directly。上面的代码,对于 42 的 $variable,将输出:int(42) &lt;pre&gt;&lt;/pre&gt; (see for yourself)。
【解决方案2】:

我通常有一个很好的函数来处理数组的输出,只是为了在调试时把它美化一下。

function pr($data)
{
    echo "<pre>";
    print_r($data); // or var_dump($data);
    echo "</pre>";
}

那就叫它吧

pr($array);

或者,如果您有这样的编辑器,可以保存 sn-ps,这样您就可以更快地访问它们,而不是为您构建的每个项目或只需要快速测试的每个页面创建一个函数。

对于print_r

echo "<pre>", print_r($data, 1), "</pre>";

对于var_dump()

echo "<pre>", var_dump($data), "</pre>";

我将上述内容与 PHP Storm 一起使用。我已将其设置为pr tab 命令。

【讨论】:

  • 提示:pr() 中的代码可以进一步简化为:echo '&lt;pre&gt;' . print_r($data, true) . '&lt;/pre&gt;';
【解决方案3】:

我也研究过这个问题,但没有找到正确的答案。这对我不起作用:

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

这不会为我提供很好的数组显示,带有换行符(我使用的是 Firefox 31.3.0)

但是,经过一些实验,这解决了问题(注意php一开始是关闭的):

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

这解决了问题,并在我的浏览器上为我显示了一个漂亮、易于阅读的数组。你会看到标签是如何没有被 PHP 包裹起来的。只有 echo var_dump 部分是。

【讨论】:

  • 提示:下次,read the manualvar_dump 永远不会返回转储值,这就是为什么您的第二个示例有效...但您仍然不需要这样做 echo var_dump..... 这也可以:echo '&lt;pre&gt;'; var_dump($variable); echo '&lt;/pre&gt;'; 或这个:&lt;pre&gt;&lt;?php var_dump($variable); ?&gt;&lt;/pre&gt;跨度>
  • 它不起作用,因为您使用了句点而不是逗号。
【解决方案4】:

如果您安装了XDebug,您可以使用它的var_dump 替换。引用:

Xdebug 替换了 PHP 的 var_dump() 函数来显示变量。 Xdebug 的版本包括针对不同类型的不同颜色,并对数组元素/对象属性的数量、最大深度和字符串长度进行了限制。还有一些其他函数也处理变量显示。

您可能需要调整以下一些设置:

有许多设置可以控制 Xdebug 修改后的 var_dump() 函数的输出:xdebug.var_display_max_children、xdebug.var_display_max_data 和 xdebug.var_display_max_depth。这三个设置的效果最好用一个例子来说明。下面的脚本运行了四次,每次都使用不同的设置。您可以使用选项卡查看差异。

但请记住,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',
  ),
)

【讨论】:

  • 这仅在第二个参数为true 时有效。我已经更新了答案以反映这一点。
  • 非常好!谢谢!
  • 这很好,所有其他建议对我都不起作用。非常感谢。
【解决方案6】:

对我来说正确的答案是

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

由于var_dump($var)var_export($var) 不返回字符串,您必须使用var_export($var, true) 强制var_export 将结果作为值返回。

【讨论】:

  • 这在几个月前已经作为答案给出了,所以不需要添加它。不会使页面更有用。改为对现有答案投票。
【解决方案7】:

您可以按Ctrl+U查看源代码。大多数浏览器都会在那里美化输出。

var_dump 是最丑的调试方式。

【讨论】:

    【解决方案8】:

    使用输出缓冲区: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>";
    ?>
    

    另一种选择是使用输出缓冲并将转储中的所有换行符转换为&lt;br&gt;元素,例如

    ob_start();
    var_dump($_SERVER) ;
    echo nl2br(ob_get_clean());
    

    【讨论】:

    • 提示:不用$dump = ob_get_contents(); ob_end_clean();,你可以简单地这样做:$dump = ob_get_clean();
    • 你也可以只用echo nl2br($dump)
    【解决方案9】:

    个人喜欢Symfony's var dumper component提供的替换功能

    使用composer require symfony/var-dumper 安装并使用dump($var)

    它会处理其余的事情。我相信那里还注入了一些 JS 以允许您与输出进行一些交互。

    【讨论】:

      【解决方案10】:

      我真的很喜欢 var_export()。如果您喜欢可复制/粘贴的代码,请尝试:

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

      或者甚至像这样的颜色语法突出显示:

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

      【讨论】:

      • highlight_string 技巧是我所知道的使var_export 可读的最简单方法之一。值得更多的支持!
      • 此答案的完整复制粘贴:stackoverflow.com/a/19816742/327862 Very Lame!
      【解决方案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】:

        我做了类似的解决方案。我创建了一个 sn-p 来替换 'vardump':

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

        Ps:我正在用最后一个 var_dump 重复数据以获取文件名和行

        所以: 变成了这样:

        如果这对你有帮助,请告诉我。

        【讨论】:

          【解决方案13】:

          将其包裹在&lt;pre&gt; 标记中以保留格式。

          【讨论】:

            【解决方案14】:

            我不想停止使用var_dump($variable);die(); 和使用pre 标签和循环对我来说似乎有点过头了,所以由于我在浏览器中查看转储,我只需右键单击页面并选择检查(我使用铬合金)。开发者工具的元素部分以非常易读的格式显示变量。

            【讨论】:

              猜你喜欢
              • 2011-01-12
              • 2015-04-30
              • 2014-06-20
              • 2020-07-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-29
              • 1970-01-01
              相关资源
              最近更新 更多