如何以可读的格式输出(到日志)多级数组?
我在一个Drupal网站上工作,当我debugging时,我总是不得不阅读长,嵌套的数组。 因此,我生活中的很大一部分时间都是使用箭头键,返回键和制表键来将1000多个string分成嵌套的可读格式。
对于drupal开发者,我不能使用devel的dsm(),因为我正在使用多步骤#ahah /#ajax窗体,而且我只能将数组输出到错误日志中,而不是屏幕上。
视觉例子:
邪恶:
array'('form_wrapper'=> array('#tree'=> true,'#type'=>'fieldset','#prefix'=>'','#suffix'=>'','#value'= >'','name'=> array('#type'=>'textfield','#title'=> NULL,'#size'=> 60,'#maxlength'=> 60,'#required'= > = false,'#description'=> NULL,'#attributes'=> array('placeholder'=>'Email',),'#post'=> array('form_wrapper'=> array('name'=> '','pass'=>'',),
…
好:
array ( 'form_wrapper' => array ( '#tree' => true, '#type' => 'fieldset', '#prefix' => '<div>', '#suffix' => '</div>', '#value' => '', 'name' => array ( '#type' => 'textfield', '#title' => NULL, '#size' => 60, '#maxlength' => 60, '#required' => false, '#description' => NULL, '#attributes' => array ( 'placeholder' => 'Email', ),
编辑 :对不起,通过“不输出到屏幕”,我的意思是通过Drupal的系统消息,可以输出数组以可点击的嵌套格式(使用devel.module)。
如果你需要logging一个错误到Apache错误日志,你可以试试这个:
error_log( print_r($multidimensionalarray, TRUE) );
http://php.net/manual/en/function.print-r.php这个函数可以用来格式化输出,;
$output = print_r($array,1);
$output
是一个stringvariables,它可以像每隔一个string一样logging。 在纯php中,你可以使用trigger_error
防爆。 trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
如果你需要在html中格式化,你可以使用<pre>
标签
简单的东西:
使用print_r
, var_dump
或var_export
应该可以做得很好,如果你在view-source模式而不是HTML模式下查看结果,或者@Joel Larson说如果你把所有的东西都包装在一个<pre>
标签中。
print_r
是最好的可读性,但它不打印null / false值。
var_dump
最适合检查值和长度的types以及null / false值。
var_export
类似于var_dump
但可用于获取转储的string。
这些格式返回的格式在源代码中正确缩进, var_export
可以用于日志logging,因为它可以用来返回转储的string。
先进的东西:
使用PHP的xdebug插件,这将var_dump
s打印为HTML格式的string,而不是原始转储格式,并且还允许您提供要用于格式化的自定义函数。
Drupal的Devel模块还有其他有用的function,包括可以打印格式化数组和日志文件的对象。 请参阅http://ratatosk.net/drupal/tutorials/debugging-drupal.html上的指南;
DD()
将任何variableslogging到站点的临时目录中名为“drupal_debug.txt”的文件中。 这个函数的所有输出都附加到日志文件中,这样可以很容易地看到在修改代码时variables的内容如何变化。
如果您使用Mac OS X,则可以使用日志控制台来监视日志文件的内容。
如果您使用的是Linux的风格,您可以使用命令“tail -f drupal_debug.txt”来观察logging到文件的数据。
这将帮助你
echo '<pre>';
$output = print_r($array,1);
echo '</pre>';
编辑
使用echo '<pre>';
是无用的,但var_export($var);
会做你期待的事情。
你应该可以在pre标签中使用var_dump()。 否则,你可以看看使用像dump_r.php的库: https : //github.com/leeoniya/dump_r.php
我的解决scheme不正确。 OP正在寻找一个格式化为空格的解决scheme来存储在日志文件中。
解决scheme可能是使用var_dump输出缓冲,然后str_replace()所有带有空格的选项卡在日志文件中对其进行格式化。