foreach循环中的自定义逻辑

时间:2017-11-27 21:21:55

标签: php arrays

我有两个具有不同数量的辅助数组的数组需要自定义合并。我不认为有一个功能可以帮助。我希望递归合并可以解决这个问题,但在这种情况下,它们会附加而不是合并(不匹配/数字索引)。所以我认为它需要一个特定的foreach循环和一些逻辑。这是我努力让自己头脑发展的逻辑:一些非常棘手的逻辑。这是挑战:

                $array1=
                    Array
                    (
                        [0] => Array
                            (
                                [0] => 8
                                [1] => 300
                            )

                        [1] => Array
                            (
                                [0] => 9
                                [1] => 400
                            )

                        [2] => Array
                            (
                                [0] => 10
                                [1] => 500
                            ) 
                    }

            $array2=
                Array
                (
                    [0] => Array
                        (
                            [0] => 8
                            [1] => A
                        )

                    [1] => Array
                        (
                            [0] => 9
                            [1] => B
                        )

                    [2] => Array
                        (
                            [0] => 10
                            [1] => C
                        )

                    [3] => Array
                        (
                            [0] => 11
                            [1] => D
                        )       
                }

            $combined=
                Array
                (
                    [0] => Array
                        (
                            [0] => 8
                            [1] => 300
                            [2] => A
                        )

                    [1] => Array
                        (
                            [0] => 9
                            [1] => 400
                            [2] => B
                        )

                    [2] => Array
                        (
                            [0] => 10
                            [1] => 500
                            [2] => C
                        )

                    [3] => Array
                        (
                            [0] => 11
                            [1] => 0 (there was no sub array value so it resolves to zero)
                            [2]=> D
                        )       
                }

子数组[0]是月份。在两个输入$数组的每一个中总共会有两个子元素,即月份和参数(例如,销售量 - $ array1和brand- $ array2)。 $ combined子数组(月/销量/品牌)中总会有3个子元素。在每个子数组中,总会有一个月的值。但是其中一个关联的子数组元素可能没有值。并且在这种情况下它应该解决为零。见例子。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

制作两个循环(只需草稿 - 在手机上写字)

$res = [];
foreach($array1 as $i) {
   $res[$i[0]] = [ $i[0], $i[1], ''];
}

foreach($array2 as $i) {
   if (! isset($res[$i[0]])) {
       $res[$i[0]] = [ $i[0], 0, ''];
   }
   $res[$i[0]][2] = $i[1];
}

demo

结果将索引为" id"。要重置它们$res = array_values($res);