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

PHP未知长度数组按间隔7位求和问题咨询

解决PHP无限长数组间隔7位元素分组求和的问题

嘿,作为PHP入门开发者碰到这个需求太正常了!不管数组多长,咱都能通过简单的逻辑搞定,给你两个实用的方案,都是新手能快速上手的:

方案一:一次遍历 + 模运算分组(效率最优)

这个方法只需要遍历数组一次,不管数组多大都能高效处理,核心是用索引对7取模来区分不同的分组:

<?php
// 示例数组(长度随便,哪怕无限长)
$array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];

// 初始化结果数组,用来存7个分组的和
$groupSums = array_fill(0, 7, 0);

// 遍历原数组的每个元素和对应的索引
foreach ($array as $index => $value) {
    // 计算当前元素属于哪个分组(0-6)
    $groupKey = $index % 7;
    // 把当前元素的值加到对应分组的和里
    $groupSums[$groupKey] += $value;
}

// 输出结果:$groupSums[0]是0、7、14...的和,$groupSums[1]是1、8、15...的和,以此类推
print_r($groupSums);
?>

逻辑解释:

  • 用$index % 7得到的结果只会是0-6,刚好对应7个分组;
  • 每遍历一个元素,直接把它加到对应的分组总和里,一次循环就搞定,内存占用也极低,完全适配“无限长”数组的场景。

方案二:按步长提取元素求和(逻辑更直观)

如果你觉得模运算有点绕,可以试试这个更直白的方法:针对每个分组(0到6),按步长7提取所有对应元素,再用array_sum()求和:

<?php
$array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
$groupSums = [];

// 遍历7个分组(0到6)
for ($i = 0; $i < 7; $i++) {
    // 从索引i开始,每隔7个元素取一个
    $groupElements = [];
    for ($j = $i; isset($array[$j]); $j += 7) {
        $groupElements[] = $array[$j];
    }
    // 计算当前分组的和,存入结果数组
    $groupSums[$i] = array_sum($groupElements);
}

print_r($groupSums);
?>

逻辑解释:

  • 外层循环控制分组(0到6),内层循环从当前分组的起始索引开始,每次加7,直到数组没有对应索引为止;
  • 把每个分组的元素收集起来后,直接用PHP内置的array_sum()求和,逻辑一目了然,新手好理解。

额外提示

如果你的数组是关联数组(不是连续数字索引),记得先转成索引数组再用上面的方法,比如用$array = array_values($array);转换后再处理。

内容的提问来源于stack exchange,提问作者Kirill S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:20:14