PHP数组转换和合并

时间:2018-11-04 19:23:12

标签: php arrays

我有一个数组:

array (size=3)
  0 => string 'Level' (length=5)
  1 => string 'Sub' (length=3)
  2 => string 'Item' (length=4)

现在我想将此数组转换为:

array (size=1)
  'Level' => 
    array (size=1)
      'Sub' => 
        array (size=1)
          'Item' => 
            array (size=0)
              ...

然后我想将此“转换后的”数组与此数组“合并”:

array (size=1)
  'Level' => 
    array (size=1)
      'Sub' => 
        array (size=1)
          'AnotherItem' => 
            array (size=0)
              ...

结果应如下所示:

array (size=1)
  'Level' => 
    array (size=1)
      'Sub' => 
        array (size=2)
          'Item' => 
            array (size=0)
              ...
          'AnotherItem' => 
            array (size=0)
              ...

我还希望能够将这个结果与另一个“转换后的”数组“合并”。 我现在尝试了两个多小时,独自寻找解决方案,但现在我的大脑崩溃了-.-

谢谢所有的帮助!

1 个答案:

答案 0 :(得分:0)

如果将数组向后循环,则可以通过使新数组=上一项是什么来构建数组。

然后使用array_merge_recursive合并两个数组。

$arr = ['level', 'sub', 'item'];
$arr = array_reverse($arr);
$new =[];

// Rebuild the array
foreach($arr as $key => $item){
    if($key ==0){
        $new = [$item => []];
    }else{
        $new = [$item => $new];
    }
}

// Your other array:
$other = array (
  'level' => 
  array (
    'sub' => 
    array (
      'AnotherItem' => 
      array (
      ),
    ),
  ),
);

// Merge the two
$new = array_merge_recursive($new, $other);

var_export($new);

输出:

array (
  'level' => 
  array (
    'sub' => 
    array (
      'item' => 
      array (
      ),
      'AnotherItem' => 
      array (
      ),
    ),
  ),
)

https://3v4l.org/VWBpM