2011-12-30 319 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