每当我使用print_r
或var_dump
时,它们都会出现在一行中而不是格式化,就像我看到这么多人和实际的php.net网站能够实现的那样。我该怎么做才能让他们这样 -
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
而不是这个
Array([a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z ))
(很确定它的出现比我只是手工删除空格更麻烦。)
答案 0 :(得分:5)
只需将转储包装在<pre>
标记中:
<pre><?php print_r($array); ?></pre>
另外,如果您查看页面的来源,它也会非常像这样。这只是因为HTML忽略了你在浏览器的一行中看到的所有空格。
答案 1 :(得分:0)
如果你真的想要一个简单的函数,它可以保持数组漂亮,可以使用无限参数,并且不需要完整的库,请尝试下面的代码片段。它将打印从pre
标签中的数组到xml对象的所有内容,标题提供参数类型和可能的对象类的信息。
function preDump() { // use string "noEcho" to just get a string return only
$args = func_get_args();
$doEcho = TRUE; $sb;
if ($args) {
$sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;padding:0em 3em 1em 1em;"><legend><b>preDump: '.count($args).' Parameters Found.</b></legend>';
foreach (func_get_args() as $arg) {
if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(preDump: )[0-9]+/', 'preDump: '.(count($args)-1), $sb); continue; }
$sb .= '<pre data-type="'.gettype($arg).'"';
switch (gettype($arg)) {
case "boolean":
case "integer":
$sb .= ' data-dump="json_encode"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
$sb .= json_encode($arg);
break;
case "string":
$sb .= ' data-dump="echo"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
$sb .= $arg;
break;
default:
$sb .= ' data-dump="var_dump"';
if (is_object($arg)) $sb .= 'data-class="'.get_class($arg).'"';
$sb .= '><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')';
if (is_object($arg)) $sb .= ' ['.get_class($arg).']';
$sb .= '</b></p><p>';
ob_start();
var_dump($arg);
$sb .= ob_get_clean();
if (ob_get_length()) ob_end_clean();
}
$sb .= '</p></pre>';
}
$sb .= '</fieldset></div>';
}
else {
$sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;"><legend><b>preDump: [ERROR]</b></legend><h3>No Parameters Found</h3></fieldset></div>';
}
if ($doEcho) echo($sb);
return $sb;
}
使用简单:
preDump($array1, $array2, $array3, $array4, $array5);
preDump('string', TRUE, 101, array( 'test', 'array' ), (object)array('object'=>'array'), $xmlVariable);
通过传递字符串noEcho
作为参数,甚至只返回字符串(不打印到浏览器)。
$bob = preDump($array1, $array2, 'noEcho');