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

当我回显var_dump($ _variables)时,我得到一个很长的包装线,包括所有的可变值和值

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

我通常有一个很好的函数来处理数组的输出,只是在debugging的时候让它变得相当漂亮。

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

那就叫它

 pr($array); 

或者,如果您有像这样的编辑器保存片段,以便您可以更快地访问它们,而不是为每个项目或每个只需要快速testing的页面创build一个函数。

对于print_r

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

对于var_dump()

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

我使用PHP Storm的上面。 我已经把它设置为一个pr选项卡命令。

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

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

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

然而,经过一些实验,这解决了这个问题(注意PHP是在第一次closures的):

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

这解决了这个问题,并在我的浏览器上为我显示了一个很好的,易于阅读的数组。 您将看到标签如何不包裹在PHP中; 只有echo var_dump部分是。

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

如果你安装了XDebug ,你可以使用它的var_dumpreplace。 引用:

Xdebugreplace了PHP的var_dump()函数来显示variables。 Xdebug的版本包含不同types的不同颜色,并限制数组元素/对象属性的数量,最大深度和string长度。 还有一些其他function处理variables显示。

您可能需要调整以下几个设置:

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

但请记住,XDebug会显着减慢你的代码,即使它刚刚加载。 不build议在生产服务器上运行。 但是,嘿,你不是在生产服务器var_dumping,是吗?

对我来说,正确的答案是

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

由于var_dump($var)var_export($var)不返回string,因此必须使用var_export($var, true)强制var_export将结果作为值返回。

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

var_dump是最丑陋的debugging方式。

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

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

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

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

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

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

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

将它包装在<pre>标记中以保留格式。

对于需要在视图源CLI中工作的开发人员,在debuggingunit testing时特别有用。

 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) } } 

我做了类似的解决scheme。 我创build了一个代码片段来replace“vardump”:

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

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

所以这: 在这里输入图像说明 成为这个: 在这里输入图像说明

让我知道这是否会帮助你。