【问题标题】:How to make the output of server headers more readable?如何使服务器标头的输出更具可读性?
【发布时间】:2011-08-02 00:39:43
【问题描述】:

鉴于以下 php5 代码输出大量难以阅读代码:

<?=var_dump($_SERVER);?>
<?=print_r($GLOBALS); ?>

问题:如何使输出更易于阅读?例如如何将每个“项目”都换行?

【问题讨论】:

    标签: php arrays readability


    【解决方案1】:

    你可以在它周围包裹一个前置元素:

    <pre><?php var_dump($_SERVER); ?></pre>
    <pre><?php print_r($GLOBALS); ?></pre>
    

    还要注意&lt;?= 需要将short_open_tags 设置为true(在较新版本的php 中为false)

    【讨论】:

      【解决方案2】:

      在您的开发环境中,您应该安装Xdebug 扩展。

      除了其他有用的功能(例如调试器!),它会让你变得更好var_dump()

      • 颜色
      • 格式化


      例如,这是我为var_dump($_SERVER); 得到的输出开始的屏幕截图:

          
      (来源:pascal-martin.fr

      【讨论】:

      • 对此+1。当出现问题时,堆栈跟踪也是超级有用的。调试就是这么简单!
      【解决方案3】:

      你可以使用&lt;pre&gt;标签来格式化输出

      <pre><?=print_r($GLOBALS); ?></pre>
      

      【讨论】:

        【解决方案4】:

        就像其他人提到的那样,您可以将其包装在&lt;pre&gt; 标签中以使其可读。我的代码中通常有以下两个函数。用作实用功能,灵感来自蛋糕。

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

        【讨论】:

          【解决方案5】:

          除了&lt;pre&gt;技巧,你可以尝试使用dbug

          让事情变得更好更清晰:dBug

          【讨论】:

            【解决方案6】:

            前面的答案提出了很好的解决方案,但如果您想对输出进行更多控制,可以在数组上运行循环。

            $_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。在那里,它适合一个利基市场。
            【解决方案7】:
            1. 这不是什么“服务器头”,而是常规数组。
            2. 为了输出数组内容,程序员通常使用循环,然后以他们希望的方式格式化输出:

            .

            foreach($_SERVER as $key => $value){
              echo "<b>$key:</b> $value<br>\n";
            }
            

            请注意,您的输出是巨大的,只是因为您要打印出 $GLOBALS 变量的内容,这对您来说完全没用。

            【讨论】:

            • 对于调试目的来说不是一个好主意。参见 cmets 对 Gilsilas 的回答。
            • @Sylverdrag 对于他目前的任务来说已经足够了。事实上,他把根本不需要的多维数组弄得一团糟。
            猜你喜欢
            • 1970-01-01
            • 2017-11-07
            • 2014-12-24
            • 2022-11-11
            • 1970-01-01
            • 2010-09-19
            • 1970-01-01
            • 2019-09-29
            相关资源
            最近更新 更多