将PHP数组输出为PHP代码,格式化

时间:2011-12-30 18:46:43

标签: php arrays multidimensional-array

我有一个带有巨大数组的文件,它有多个深度,看起来有点像这样。

$array = array(
   'all_tools' => array(
       'title' => 'Tools',
       'help' => 'Help with tools'
   ),
   'addcode' => array(
       'title' => 'Add Code',
       'help' => 'Add code help'
   ),
   'editcode' => array(
       'title' => 'Edit Code',
       'help' => 'Edit code help'
   )
);

显然这是不够可读的,我被要求将此数组转换为以下格式。

$array['all_tools']['title'] = 'Tools';
$array['all_tools']['help'] = 'Help with tools';

$array['addcode']['title'] = 'Add Code';
$array['addcode']['help'] = 'Add code help';

$array['editcode']['title'] = 'Edit Code';
$array['editcode']['help'] = 'Edit code help';

它是相同的数组,但我需要像这样构造它。这需要花费数小时手工完成,因为这个文件非常庞大。有没有人知道PHP函数会以这种方式打印多维数组的内容吗?

编辑: 我想了解更多信息。我正在处理的数组在每个键中可以嵌套多少个数组有一些变化。我需要一个可以根据需要进行多层深度解决的解决方案,并且当它碰到字符串而不是数组时动态地知道何时停止。

3 个答案:

答案 0 :(得分:3)

这将吐出一个文本文件,您可以将其复制并粘贴到您的代码中:

foreach($array as $first_level_key => $value){
    foreach($value as $sub_key => $sub_value){
        echo "\$array['".$first_level_key."']['".$sub_key."'] = '$sub_value'; \n";
    }
}

答案 1 :(得分:3)

来自var_export

的php.net手册
<?php
function recursive_print ($varname, $varval) {
  if (! is_array($varval)):
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
  else:
    print $varname . " = array();<br>\n";
    foreach ($varval as $key => $val):
      recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
    endforeach;
  endif;
}
?>
  

如果输出是文本文件而不是HTML页面,请删除   &LT峰; br&GT; S

答案 2 :(得分:0)

有多种方法可以将PHP变量输出为直接可使用的代码。

  1. var_export就像var_dump / print_r一样,您可以使用var_export将数组输出为可消费(可解析)的PHP代码。

  2. json_encode您可以将数组输出为JSON编码格式,该格式不仅可以使用PHP语言,还可以使用大部分其他语言JSON 1}}是一种与语言无关的格式。

  3. serialize + unserialize

  4. 使用您自己的函数/方法生成输出php字符串。