PHP有漂亮的打印吗?

Aar*_*Lee 110 php pretty-print

我正在修复一些PHP脚本,我错过了ruby的漂亮打印机.即

require 'pp'
arr = {:one => 1}
pp arr
Run Code Online (Sandbox Code Playgroud)

将输出{:one => 1}.这甚至适用于相当复杂的对象,并且更容易挖掘到未知脚本.有没有办法在PHP中复制此功能?

Joe*_*dez 158

这是我用来打印我的数组:

<pre>
    <?php
        print_r($your_array);
    ?>
</pre>
Run Code Online (Sandbox Code Playgroud)

魔术附带pre标签.

  • 这实际上比`var_dump`要好得多,因为`var_dump`会修剪结果,如果它是一个大数组或一个大字符串...... (3认同)
  • 简化版将是:echo"<pre>".print_r($ array,1)."</ PRE>"; (3认同)

And*_*ore 101

双方print_r()var_dump()会输出可视化表示内PHP对象.

$arr = array('one' => 1);
print_r($arr);
var_dump($arr);
Run Code Online (Sandbox Code Playgroud)

  • 为了使它在浏览器中看起来更好用:echo"<pre>"; 的print_r($ ARR); echo"</ pre>"; (105认同)
  • 如果您安装XDebug扩展,var_dump将成为一个更加漂亮的打印机. (42认同)
  • 至于Domenic的观点,只需将其包装起来:function pr($ array = null){print"<pre> <code>".print_r($ array)."</代码> </ PRE>"; } (13认同)
  • **@ darren_n:**`print_r()`自动输出并且不返回任何内容(除非它的第二个参数是'true`),因此你不能连接到另一个字符串.请改用以下内容:`function pr($ var){print'<pre>'; 的print_r($ VAR); print'</ pre>'; }` (10认同)
  • @Domenic你可能想要'echo'<pre>',htmlentities(print_r($ arr,true)),'</ pre>',这也为Darren的建议提供了一些可信度(: (6认同)

Sea*_*ing 21

为简单起见,print_r()var_dump()不能被击败.如果你想要一些有点发烧友或处理大型列表和/或深度嵌套数据的东西,Krumo将让你的生活更轻松 - 它为你提供了格式精美的折叠/扩展显示.


Gui*_*ier 21

我发现的最好的是:

echo "<pre>";
print_r($arr);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

如果你想要它更详细:

echo "<pre>";
var_dump($arr);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

<pre>在Web开发环境中添加HTML标记将\n正确地遵循打印功能的换行符,而无需添加一些html<br>


小智 19

对于PHP,您可以轻松利用HTML和一些简单的递归代码来实现嵌套数组和对象的漂亮表示.

function pp($arr){
    $retStr = '<ul>';
    if (is_array($arr)){
        foreach ($arr as $key=>$val){
            if (is_array($val)){
                $retStr .= '<li>' . $key . ' => ' . pp($val) . '</li>';
            }else{
                $retStr .= '<li>' . $key . ' => ' . $val . '</li>';
            }
        }
    }
    $retStr .= '</ul>';
    return $retStr;
}
Run Code Online (Sandbox Code Playgroud)

这将打印数组作为嵌套HTML列表的列表.HTML和您的浏览器将处理缩进并使其清晰易读.


pfr*_*sen 6

记得html_errors = on在php.ini中设置,以便与xdebug结合使用var_dump().


Mou*_*eer 6

最好的方法是

echo "<pre>".print_r($array,true)."</pre>";
Run Code Online (Sandbox Code Playgroud)

例:

$array=array("foo"=>"999","bar"=>"888","poo"=>array("x"=>"111","y"=>"222","z"=>"333"));
echo "<pre>".print_r($array,true)."</pre>";
Run Code Online (Sandbox Code Playgroud)

结果:

数组
(
    [foo] => 999
    [bar] => 888
    [poo] =>数组
        (
            [x] => 111
            [y] => 222
            [z] => 333
        )
)

阅读有关print_r的更多信息.

关于print_r的第二个参数"true"来自文档:

当此参数设置为TRUE时,print_r()将返回信息而不是打印信息.