使PHP var_dump()值显示每个值一行

use*_*318 62 php var-dump line

当我回显var_dump($ _ variable)时,我得到一条长的包装线,包含所有的varable和值

["kt_login_user"]=>  string(8) "teacher1" ["kt_login_id"]=>  string(3) "973" ["kt_campusID"]=>  string(4) "9088" ["kt_positionID"]=>  string(1) "5" 
Run Code Online (Sandbox Code Playgroud)

有没有办法让每个值都显示在自己的行上以便于阅读?像这样的东西:

["kt_login_user"]=>  string(8) "teacher1" 
["kt_login_id"]=>  string(3) "973" 
["kt_campusID"]=>  string(4) "9088" 
["kt_positionID"]=>  string(1) "5"
Run Code Online (Sandbox Code Playgroud)

phi*_*bar 85

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

echo '<pre>' , var_dump($variable) , '</pre>';
Run Code Online (Sandbox Code Playgroud)

  • 32赞成错误答案... [var_dump不返回任何内容,直接输出](http://php.net/manual/en/function.var-dump.php#refsect1-function.var-dump-parameters ).对于`$ variable`为42,上面的代码将输出:`int(42)<pre> </ pre>`([参见你自己](https://3v4l.org/fLAjK)). (19认同)
  • 我倾向于使用print_r()作为数组 (3认同)
  • 我们认为我们是唯一这样做的人! (2认同)
  • 你可以随时做一个视图源(在许多浏览器中使用ctrl + U) (2认同)

Dav*_*ave 36

我通常有一个很好的函数来处理数组的输出,只是在调试时稍微调整一下.

function pr($data)
{
    echo "<pre>";
    print_r($data); // or var_dump($data);
    echo "</pre>";
}
Run Code Online (Sandbox Code Playgroud)

然后就叫它

pr($array);
Run Code Online (Sandbox Code Playgroud)

或者,如果你有一个类似的编辑器保存片段,那么你可以更快地访问它们,而不是为你构建的每个项目或每个只需要快速测试的页面创建一个函数.

用于print_r:

echo "<pre>", print_r($data, 1), "</pre>";
Run Code Online (Sandbox Code Playgroud)

用于var_dump():

echo "<pre>", var_dump($data), "</pre>";
Run Code Online (Sandbox Code Playgroud)

我使用上面的PHP Storm.我已将其设置为prtab命令.

  • 提示:`pr()`中的代码可以进一步简化为:`echo'<pre>'.print_r($ data,true).'</ PRE>';` (2认同)

Mar*_*ark 14

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

echo '<pre>' . var_dump($variable) . '</pre>';
Run Code Online (Sandbox Code Playgroud)

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

然而,经过一些实验,这解决了问题(注意php首先关闭):

... ?> <pre><?php echo var_dump($variable) ?></pre> <?php ...
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题,并在我的浏览器上为我显示了一个漂亮,易于阅读的数组.你看到标签没有用PHP包装; 只有echo var_dump部分是.

  • 这是唯一对我有用的解决方案. (2认同)
  • 提示:下次,[阅读手册](http://php.net/manual/en/function.var-dump.php)。`var_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;` (2认同)

dm0*_*514 13

如果您安装了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,不是吗?


Tie*_*eme 11

var_export会给你一个很好的输出.文档中的示例:

$a = array (1, 2, array ("a", "b", "c"));
echo '<pre>' . var_export($a, true) . '</pre>';
Run Code Online (Sandbox Code Playgroud)

将输出:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
Run Code Online (Sandbox Code Playgroud)


Hum*_*eda 10

对我来说,正确的答案是

echo '<pre>' . var_export($var, true) . '</pre>';
Run Code Online (Sandbox Code Playgroud)

由于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>";
?>
Run Code Online (Sandbox Code Playgroud)

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

ob_start();
var_dump($_SERVER) ;
echo nl2br(ob_get_clean());
Run Code Online (Sandbox Code Playgroud)


Ste*_*old 7

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

var_dump 是最丑陋的调试方式.


apo*_*fos 5

我个人很喜欢Symfony 的 var dumper 组件提供的替换功能

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

它负责其余的事情。我相信那里还注入了一些 JS,让您可以与输出进行一些交互。