PHP显示一个可读数组


PHP display a readable array

我看了php.net的手册,并看到了一些例子,当使用var_dump和其他命令时,请参见例子。

所有示例都使用pre样式排序。

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

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"}}

我认为这是一个运行时选项,我可以改变,但我不确定。那么我怎样才能得到与手册中相同格式的输出呢?

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

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

输入/输出示例:

$arr = [1, 2, 3];

with pre tag:

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

不带pre标签:

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

我为这个例子创建了这个函数。

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(),你可以传递数组,第二个参数说它应该返回而不是打印出来。

我使用调试信息来获取这个函数被调用的位置,因为有时我有很多这样的信息,这可能会让人感到困惑。您还可以为它设置一个名称,以确定回显的内容;)