使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_dump
replace。 引用:
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重复数据来获取文件名和行
所以这: 成为这个:
让我知道这是否会帮助你。