【发布时间】:2018-01-29 09:11:35
【问题描述】:
如何以类似树的格式打印数组 - 使其更易于阅读?
【问题讨论】:
-
请注意,
print_r以纯文本而非 HTML 格式打印。所以你需要查看源代码才能看到原始输出。
标签: php
如何以类似树的格式打印数组 - 使其更易于阅读?
【问题讨论】:
print_r 以纯文本而非 HTML 格式打印。所以你需要查看源代码才能看到原始输出。
标签: php
试试:
<pre><?php print_r($var); ?></pre>
它将给出 HTML 的空白策略修剪掉的正确树结构。
【讨论】:
<pre><?php print_r($var,true); ?></pre> 给出了更一致(树状)的结果(尽管我还没有研究 为什么 )
您是否将输出包装在<pre> 标签中?这应该会给你带来相当不错的输出,因为它会显示空格。另一种选择是安装xdebug 扩展,然后可以replace var_dump 生成更具可读性的HTML 输出。
【讨论】:
var_dump 非常好地支持数组,几乎完全消除了对 print_r 的需求。
function pr($var)
{
print '<pre>';
print_r(htmlspecialchars($var));
print '</pre>';
}
pr($myArray);
【讨论】:
htmlspecialchars 请。好的,所以安全性不是调试代码的问题(尽管转义肯定是您应该始终拥有的习惯),但是变量中的任何“
function pr($var) { print '<pre>' . htmlspecialchars(print_r($var, true)) . '</pre>'; }
我发现 print_r 如下所示是个好主意
printf("<pre>%s</pre>", print_r($array, true));
它可能不理想,但更容易阅读。
【讨论】:
试试看Zend_Debug,这是一个来自 Zend 框架的相对即插即用的模块,它在有效转储复杂变量方面做得非常出色。
用法:
$my_var = new StdObject(); // or whatever
Zend_Debug::dump($my_var);
die; // optional, prevents routing, forwarding away, etc.
【讨论】:
您可以将其打印到错误日志中:
error_log(print_r($myarray,1));
请注意,您将看到 \n 而不是回车,因为它必须折叠成一行。
【讨论】:
Mabe 输出看起来像网页中的垃圾。尝试查看页面的源代码,我想它会是树状格式。
【讨论】:
正如许多人之前提到的,请确保将其包裹在 <pre> 标记上。
我会采取额外的预防措施,以确保没有任何东西包裹 <pre>,例如 <p> 或 <div> 使用可以覆盖 Pre 样式的 CSS 类
【讨论】:
我可以建议使用var_export($array)吗?
它使用可解析的 php 语法
格式化值即使你忘记输出<pre>和</pre>标签,
虽然对眼睛不太好,
它的输出仍然比print_r 非正式的一堆数据更有意义。
【讨论】: