PHP显示可读数组

时间:2015-05-21 15:54:19

标签: php arrays var-dump

我看到php.net的手册并看到一些示例,当使用var_dump和其他命令查看示例时。

所有示例都以预先样式排序。

但在我自己的服务器上,我只在一行上看到相同的例子

var_dump($a);

在手动上看 - >

array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}

在我的服务器上,我看到:

array(3) {[0]=>int(1) [1]=>int(2) [2]=>array(3) {[0]=>string(1) "a" [1]=>string(1) "b" [2]=>string(1) "c"}}

我认为这是一个运行时选项,我可以更改,但我不确定。那么如何以与手册中相同的格式获得输出?

2 个答案:

答案 0 :(得分:5)

您可能正在寻找pre标记,它会为您提供一个很好的格式化输出。只需在使用var_dump();之前打印,例如

echo "<pre>";
var_dump($arr);
echo "</pre>";

输入/输出示例:

$arr = [1, 2, 3];
带有pre标记的

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

没有pre标记:

array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

答案 1 :(得分:0)

我为这种情况设置了这个功能。

function echo_array($array,$name = '')
{
    $debug = debug_backtrace();
    $file = $debug[0]['file'];
    $line = $debug[0]['line'];
    $array = "<pre>".print_r($array,true)."</pre>";
    ?>
    <table cellpadding="0" cellspacing="0" width="100%" style="background-color:white;">
      <tr>
        <td align="left">
          <fieldset>
            <legend>
              <?=$name?> in: <?=$file?>:<?=$line?>
            </legend>
            <?=$array?>
          </fieldset>
        </td>
      </tr>
    </table>
    <?
}

使用print_r()可以传递数组,第二个参数表示它应该返回而不是打印出来。

我使用调试信息来获取调用此函数的位置,因为有时我必须使用其中许多函数,因为它可能会让人感到困惑。 您还可以为其设置名称以确定回显的内容;)