将子数组值与一个数组合并为一个数组

我可能没有正确地表达这个问题,所以这就是我们要实现的目标。


array { 

    [0]=> { 

        ["Abilities"]=> { ["Numerical"]=> 3 } 

    } 

    [1]=> { 

        ["Abilities"]=> { ["Verbal"]=> 1 } 

    } 

    [2]=> { 

        ["Domain"]=> { ["Programming"]=> 0 } 

    } 


array { 

    [0]=> { 

        ["Abilities"]=> { ["Numerical"]=> 3 ["Verbal"]=> 1 } 

    } 

    [1]=> { 

        ["Domain"]=> { ["Programming"]=> 0 } 

    } 

我从外部来源获得此阵列,因此我需要优化这种方式才能使用它。


四季花海
浏览 198回答 1
1回答

森林海

从外部来源获得的数组就像需要合并到单个树中的一组独立分支。您可以使用递归函数来创建要使用的“优化”结构。无论每个分支的深度如何,都应使用递归方法。function merge_branches(array $branches): array{    $merge = function ($node, &$tree) use (&$merge) {        if (is_array($value = reset($node))) {            $merge($value, $tree[key($node)]);        // merge branch node recursively        } else {            $tree[key($node)] = $value;               // set leaf node to value        }    };    $tree = [];    foreach ($branches as $branch) {        $merge($branch, $tree);    }    return $tree;}$optimized = merge_branches($external);
打开App,查看更多内容
随时随地看视频慕课网APP