You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:44:58