如何像给定格式一样格式化多维数组



我有一个带有一些键的数组,在这里我需要的是在同一键上合并值,例如,键117&107应如下所示在输出阵列中合并。

$input_array = array (
38 => array
    (
        117 => array
            (
                'scorecard' => array
                    (
                        0 => 'q4'
                    ),
                'business_plan' => array
                    (
                        0 => 'q4'
                    )
            ),
        107 => array
            (
                'scorecard' => array
                    (
                        0 => 'q1'
                    ),
                'business_plan' => array
                    (
                        0 => 'q2'
                    )
            ),
    ),
53 => array
    (
        373 => array
            (            
                'scorecard' => array
                    (
                        0 => 'q4'
                    ),
                'business_plan' => array
                    (
                        0 => 'q1'
                    )
            ),
        110 => array
            (       
                'scorecard' => array
                    (
                        0 => 'q4',
                        0 => 'q3'
                    ),
                'business_plan' => array
                    (
                        0 => 'q4'
                    ),
                'marketing_plan' => array
                    (
                        0 => 'q3',
                        1 => 'q4'
                    )
            )
    ),
318 => array
    (
        2279 => array
            (             
                'scorecard' => array
                    (
                        0 => 'q4'
                    )
            )
    )
 );

输出数组将包含这样的值: -

 Array
 (
[38] => Array
    (
     [scorecard] => Array
                    (
                        [0] => q4
                        [1] => q1
                    )
     [business_plan] => Array
                    (
                        [0] => q4
                        [1] => q2
                    )            
    )
[53] => Array
    (
        [scorecard] => Array
            (
                 [0] => q4
                 [1] => q3
            )
        [business_plan] => Array
            (
                [0] => q1
                [0] => q4
            )
        [marketing_plan] => Array
            (
                [0] => q3
                [1] => q4
            )
    )
[318] => Array
    (
        [scorecard] => Array
            (
                [0] => q4
            )        
    )
 )

可以通过组合array_maparray_reducearray_merge_recursive

来完成
$result = array_map(function ($item) {
    return array_reduce($item, 'array_merge_recursive', []);
}, $input_array);

这里正在工作演示。

最新更新