2011-12-30 42 views
1

我有一个带有巨大数组的深度数组文件,看起来有点像这样。将PHP数组输出为PHP代码,格式化

$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函数会以这种方式打印多维数组的内容吗?

编辑: 我想了解更多信息。我正在处理的数组有多少个数组可以嵌套在每个键中。我需要一种解决方案,可以根据需要深入到更深的级别,并且在遇到字符串而不是阵列时动态地知道何时停止。

+0

Google:“php dump multidimensional-array” – 2011-12-30 18:48:52

+10

你的老板偶尔没有尖利的头发,是吗? – 2011-12-30 18:50:20

+0

奇怪的请求,考虑到第一个要求比您要求转换的方式更容易阅读。 – 2011-12-30 18:56:31

回答

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

从php.net手册var_export

<?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页面,请删除 <br> s。

0

您可以通过多种方式将PHP变量作为直接消耗性代码输出。

  1. var_export就像var_dump/print_r,您可以使用var_export只输出数组作为消耗品(可解析)PHP代码。

  2. json_encode可以输出数组JSON编码格式,这将是可消耗的不仅是PHP语言,但也因为JSON大多数其他语言是一种语言无关的格式。

  3. serialize + unserialize

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