2015-04-03 113 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我们遇到过的元素。
  • 完成!如果这个元素的类型(遇到我们或不)是数组,那么函数会调用它自己。