繁体   English   中英

根据参考重命名多维php数组中的键

[英]Renaming keys in multidimentional php array as per reference

我正在尝试根据包含正确名称的第二个数组重命名多维数组上的键。

我的多维数组

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

和正确的名称数组:

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

小菜一碟


数组: 地球 并重命名

    $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数组元素,检查元素键是否在$ rename数组的键中
  • 如果 ,我们将这个元素添加到$ earth数组中,但仍将其分配给key,并在匹配的$ rename arrays key值中满足!
  • 然后取消设置我们遇到的$ earth arrays元素。
  • 完成! 如果此元素的类型(是否遇到过)是数组,则函数会自行调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM