Merge 2 arrays by their index in each row
我有两个数组,每一个数组总是有相同的行数和每行的值数。
我需要将两个数组合并在一起,以合并每行的结果,但以一种特殊的方式(每个数组中每行也只有3个结果):
例如,对于每一行,取每个数组的第一个结果,并将它们放在一起,然后是每个数组的第二个结果,并将它们放在一起,最后是第三个结果。
因此,数组1的值始终位于数组2的值之前(示例如下所示):
数组1:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
数组2:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
号
预期组合阵列格式:
1 2 3 4 5 6 7 8 9 10 |
返回错误布局的当前循环:
1 2 3 4 5 6 | $results = array(); foreach ($questionDetails as $key => $question) { for ($i = 0; $i < 3; $i++) { $results[$key][] = $array1[$key] + $array2[$key]; } } |
。
返回:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | array:7 [▼ 24 => array:3 [▼ 0 => array:3 [▼ 0 => 0 1 => 0.66666666666667 2 => 0.66666666666667 ] 1 => array:3 [▼ 0 => 0 1 => 0.66666666666667 2 => 0.66666666666667 ] 2 => array:3 [▼ 0 => 0 1 => 0.66666666666667 2 => 0.66666666666667 ] ] 25 => array:3 [?] 26 => array:3 [?] 27 => array:3 [?] 29 => array:3 [?] 30 => array:3 [?] 31 => array:3 [?] ] |
我不确定为什么我的循环不只是将每一行的三个值相加-但是我认为它们的顺序仍然不正确,但是我不确定如何处理这个问题。
非常感谢。
如果我正确理解您的问题,这是"不成熟"(但保存)的解决方案-所有键都会根据需要保留一组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
号
编辑:有一种更灵活的方法来实现这一点,其中参数的数量可能会有所不同(请参见php:array_merge()的交替顺序(zip顺序))。.
1 2 3 4 5 6 7 8 9 10 11 | $array1; $array2; function array_zip(...$arrays) { return array_merge(...array_map(null, ...$arrays)); } $results = array(); foreach ($questionDetails as $key => $question1) { $results[$key] = array_zip($question1,$array2[$key]); } |
我会这样做:
1 2 3 4 5 6 7 8 |
对于数量可变的记录。