如何以人类可读的格式输出(到日志)多级数组?

2022-08-30 07:20:39

我正在一个drupal站点上工作,在调试时,我总是需要通读长嵌套数组。因此,我生命中的很大一部分时间都花在了使用箭头键、return 键和 Tab 键上,将 1000 多个字符串拆分为嵌套的可读格式。

对于 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)。


答案 1

如果您需要将错误记录到Apache错误日志中,您可以尝试以下操作:

error_log( print_r($multidimensionalarray, TRUE) );

答案 2

http://php.net/manual/en/function.print-r.php此功能可用于格式化输出,

$output = print_r($array,1);

$output是一个字符串变量,它可以像其他字符串一样记录。在纯php中,你可以使用trigger_error

前任。trigger_error($output);

http://php.net/manual/en/function.trigger-error.php

如果你需要用html格式化它,你可以使用标签<pre>


推荐