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

如何按1:3比例合并两个数组?附PHP业务场景代码

按1:3比例合并两个PHP数组的实现方案

嘿,我来帮你搞定这个数组合并的需求!根据你给出的示例,我们需要实现一个逻辑:每取第一个数组的1个元素,就紧接着从第二个数组取3个元素,直到其中一个数组的元素耗尽(如果第二个数组剩下的元素不足3个,就把剩下的都加上;如果第二个数组空了,就停止处理第一个数组的剩余元素)。

实现思路

核心逻辑很简单:

  • 遍历第一个数组的每个元素
  • 每次先将当前第一个数组的元素加入结果数组
  • 然后从第二个数组中取出最多3个元素追加到结果数组,同时跟踪第二个数组的当前位置
  • 当第二个数组没有剩余元素时,立即停止遍历第一个数组

完整函数实现

function mergeArraysOneToThree($arr1, $arr2) {
    $merged = [];
    $arr2Length = count($arr2);
    $currentArr2Index = 0;
    
    foreach ($arr1 as $item) {
        // 如果第二个数组已经没有元素了,停止后续处理
        if ($currentArr2Index >= $arr2Length) {
            break;
        }
        
        // 添加第一个数组的当前元素
        $merged[] = $item;
        
        // 从第二个数组取最多3个元素
        for ($i = 0; $i < 3; $i++) {
            if ($currentArr2Index >= $arr2Length) {
                break;
            }
            $merged[] = $arr2[$currentArr2Index];
            $currentArr2Index++;
        }
    }
    
    return $merged;
}

测试示例数据

用你给出的测试数组验证一下:

$arr1 = [100, 200, 300, 400, 500];
$arr2 = [111, 112, 113, 114, 115, 116, 117, 118, 119, 120];

$mergedResult = mergeArraysOneToThree($arr1, $arr2);
print_r($mergedResult);

执行后会输出你期望的结果:

Array
(
    [0] => 100
    [1] => 111
    [2] => 112
    [3] => 113
    [4] => 200
    [5] => 114
    [6] => 115
    [7] => 116
    [8] => 300
    [9] => 117
    [10] => 118
    [11] => 119
    [12] => 400
    [13] => 120
)

结合你的数据库代码使用

你给出的代码是从数据库获取第一个数组的逻辑,我们可以把它和合并函数结合起来。假设第二个数组也是从数据库查询得到的,完整代码如下:

// 获取第一个数组(你的原有代码)
$pervo = [];
$sql = "SELECT * FROM `zayvki` WHERE `prioretet`='2' AND `status`='1' AND `let`='2' ORDER BY `dataZayvki` ASC";
$result = mysql_query($sql);
while ($itog = mysql_fetch_array($result, MYSQL_ASSOC)) {
    // 替换成你实际需要存入数组的字段,比如`id`、`title`等
    $pervo[] = $itog['id'];
}

// 获取第二个数组(示例,根据你的实际需求修改查询)
$vtoro = [];
$sql2 = "SELECT * FROM `your_second_table` WHERE your_condition_here";
$result2 = mysql_query($sql2);
while ($itog2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    $vtoro[] = $itog2['target_field']; // 替换成你需要的字段
}

// 调用合并函数得到最终数组
$finalMergedArray = mergeArraysOneToThree($pervo, $vtoro);

// 可以打印查看结果或者用于后续业务逻辑
print_r($finalMergedArray);

小提示

  • 如果你希望即使第二个数组空了,也要把第一个数组剩余的元素全部加入结果,可以去掉foreach循环里的break语句。
  • 另外,mysql_*系列函数已经被PHP废弃了,建议你改用mysqli_*或者PDO来操作数据库,这样更安全也更符合现代PHP的规范。

内容的提问来源于stack exchange,提问作者Maksim Morozov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:03:28