如何在PHP中交替合并两个数组(按首元素依次排列)
PHP实现两个数组交替合并
方法一:循环遍历(直观易懂)
这种方法通过遍历数组索引,依次将两个数组的对应元素添加到结果数组中,既能满足等长数组的合并需求,也能灵活处理两个数组长度不一致的场景。
$A1 = [1, 2, 3]; $A2 = [4, 5, 6]; $A3 = []; // 获取两个数组的最大长度,适配长度不一致的情况 $maxLength = max(count($A1), count($A2)); for ($i = 0; $i < $maxLength; $i++) { // 若A1当前索引存在元素,加入结果数组 if (isset($A1[$i])) { $A3[] = $A1[$i]; } // 若A2当前索引存在元素,加入结果数组 if (isset($A2[$i])) { $A3[] = $A2[$i]; } } print_r($A3); // 输出:Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 5 [4] => 3 [5] => 6 )
方法二:利用内置函数简化代码
借助array_map将两个数组的对应元素配对成子数组,再通过array_merge展开这些子数组,代码更简洁紧凑:
$A1 = [1, 2, 3]; $A2 = [4, 5, 6]; // 用array_map将对应元素配对,null用于补位长度不一致的情况 $pairs = array_map(function($a, $b) { return [$a, $b]; }, $A1, $A2); // 展开所有子数组得到最终结果 $A3 = array_merge(...$pairs); print_r($A3); // 输出:Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 5 [4] => 3 [5] => 6 )
如果两个数组长度不同,可在array_map中过滤掉null值:
$pairs = array_map(function($a, $b) { $items = []; if ($a !== null) $items[] = $a; if ($b !== null) $items[] = $b; return $items; }, $A1, $A2); $A3 = array_merge(...$pairs);
方法三:用array_reduce合并
通过array_reduce遍历其中一个数组,同时关联另一个数组的对应元素完成合并:
$A1 = [1, 2, 3]; $A2 = [4, 5, 6]; $A3 = array_reduce($A1, function($carry, $item, $index) use ($A2) { $carry[] = $item; if (isset($A2[$index])) { $carry[] = $A2[$index]; } return $carry; }, []); print_r($A3);
内容的提问来源于stack exchange,提问作者Lingesh Deepak
相关产品推荐
相关产品推荐

