【发布时间】:2011-08-02 00:39:43
【问题描述】:
鉴于以下 php5 代码输出大量难以阅读代码:
<?=var_dump($_SERVER);?>
<?=print_r($GLOBALS); ?>
问题:如何使输出更易于阅读?例如如何将每个“项目”都换行?
【问题讨论】:
标签: php arrays readability
鉴于以下 php5 代码输出大量难以阅读代码:
<?=var_dump($_SERVER);?>
<?=print_r($GLOBALS); ?>
问题:如何使输出更易于阅读?例如如何将每个“项目”都换行?
【问题讨论】:
标签: php arrays readability
你可以在它周围包裹一个前置元素:
<pre><?php var_dump($_SERVER); ?></pre>
<pre><?php print_r($GLOBALS); ?></pre>
还要注意<?= 需要将short_open_tags 设置为true(在较新版本的php 中为false)
【讨论】:
在您的开发环境中,您应该安装Xdebug 扩展。
除了其他有用的功能(例如调试器!),它会让你变得更好var_dump():
例如,这是我为var_dump($_SERVER); 得到的输出开始的屏幕截图:
(来源:pascal-martin.fr)
【讨论】:
你可以使用<pre>标签来格式化输出
<pre><?=print_r($GLOBALS); ?></pre>
【讨论】:
就像其他人提到的那样,您可以将其包装在<pre> 标签中以使其可读。我的代码中通常有以下两个函数。用作实用功能,灵感来自蛋糕。
function pr() {
$vars = func_get_args();
echo '<pre>';
foreach ($vars as $var) {
print_r($var);
}
echo '</pre>';
}
function prd() { //dies after print
$vars = func_get_args();
echo '<pre>';
foreach ($vars as $var) {
print_r($var);
}
echo '</pre>';
die();
}
【讨论】:
除了<pre>技巧,你可以尝试使用dbug
让事情变得更好更清晰:dBug
【讨论】:
前面的答案提出了很好的解决方案,但如果您想对输出进行更多控制,可以在数组上运行循环。
$_SERVER 和 $_GLOBALS 是数组,所以你可以这样做
foreach($_SERVER as $key=>$value){
echo $key . ' is ' . $value . '<br />' . PHP_EOL;
}
您还可以添加 if 语句以忽略 $_SERVER/$_GLOBALS 中的某些项目
【讨论】:
”标签相比,它的代码太多了。其次,它对多维数组没有好处。当然,您可以放置嵌套的 foreach 循环,但是您愿意为使用做得更好的事情做多远?如果你想让它变得漂亮,你真的应该考虑使用 dbug
/var_dump() 不使用调试。这个特定的例子不适用于多维数组,但 $_SERVER 是一维的,只需少量编辑它也可以支持多维数组
更简单、便携、漂亮?你肯定是在开玩笑。如果您需要快速查看数组,没有什么比更容易的了。如果你想让事情变得漂亮,使用像dBug这样的库。如果您需要仔细查看,xdebug 就是它(但安装/配置很痛苦)。没有比编写自己的循环更容易的情况了。更不用说它看起来像普通代码,你偶尔会忘记它为什么在那里。快速干净,前。漂亮,dbug。详细,xdebug。过于复杂,每次都编写自己的狡猾版本的dbug。在那里,它适合一个利基市场。
.
foreach($_SERVER as $key => $value){
echo "<b>$key:</b> $value<br>\n";
}
请注意,您的输出是巨大的,只是因为您要打印出 $GLOBALS 变量的内容,这对您来说完全没用。
【讨论】: