我有两个具有不同数量的辅助数组的数组需要自定义合并。我不认为有一个功能可以帮助。我希望递归合并可以解决这个问题,但在这种情况下,它们会附加而不是合并(不匹配/数字索引)。所以我认为它需要一个特定的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个子元素。在每个子数组中,总会有一个月的值。但是其中一个关联的子数组元素可能没有值。并且在这种情况下它应该解决为零。见例子。有什么想法吗?
答案 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];
}
结果将索引为" id"。要重置它们$res = array_values($res);