2015-04-03 47 views
0

我想重新命名多維數組上的按鍵,它基於第二個數組,其中包含正確的名稱。按照參考在多維php數組中重命名按鍵

我多維數組

$earth = Array (
    World => Array(
    Europe => Array(
     Portugal => Array() 
     spain => Array() 
     France => Array() 
    ) 
    asia => Array(
     Japan => Array() 
     China => Array() 
    ) 
) 

和正確的名稱數組:

$rename = Array (
    [asia] => Asia 
    [spain] => Spain 
) 

回答

1

小菜一碟


陣列:地球重命名

$earth = Array(
    'World' => Array(
     'Europe' => Array(
      'Portugal' => Array(), 
      'spain' => Array(), 
      'France' => Array() 
      ), 
     'asia' => Array(
      'Japan' => Array(), 
      'China' => Array() 
      ) 
     ) 
    ); 

    $rename = Array (
     'asia' => 'Asia', 
     'spain' => 'Spain' 
    ); 

,並呼籲與EM此功能

function test_rename(&$earth,$rename){ 
    foreach ($earth as $e => &$y) { 
     if(in_array($e, array_keys($rename))){ 
      $earth[$rename[$e]] = $earth[$e]; 
      unset($earth[$e]); 
     } 
     if(is_array($y)){ 
      test_rename($y,$rename); 
     } 
    } 
} 

test_rename($earth,$rename); 

此功能是遞歸的推動需要被重新命名爲原始數組新鍵鍵的值,並會取消之前的關鍵:

描述

  • 的foreach $大地陣列元素檢查是否元素的關鍵是在鍵$重命名陣列
  • 如果,我們將這種$地球陣列這個元素我們仍然在,但我們將其分配給關鍵,在價值會見匹配$重命名陣列鍵!
  • 然後取消設置$ earth arrays我們遇到過的元素。
  • 完成!如果這個元素的類型(遇到我們或不)是數組,那麼函數會調用它自己。