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

PHP中按3kg范围分组整理数值数组的实现方法咨询

解决PHP数组按3kg范围分组的问题

没问题,我来帮你搞定这个分组转换!咱们一步步拆解怎么做:

核心思路

  1. 先把原始数组里带kg的重量字符串转换成纯整数,方便后续区间计算。
  2. 对每个重量值,计算它所属的3kg跨度区间(比如85kg对应85kg-88kg,90kg对应89kg-92kg)。
  3. 把同一区间的计数累加起来,最终整理成目标格式的数组。

完整代码实现

// 你的原始数组
$originalData = [
    '85kg' => '1',
    '87kg' => '3',
    '88kg' => '1',
    '90kg' => '3',
    '98kg' => '1'
];

$result = [];
$range = 3; // 你需要的3kg区间跨度
$intervalStep = $range + 1; // 每个区间包含的数值个数(比如85-88是4个数值,跨度刚好3kg)

foreach ($originalData as $weightStr => $count) {
    // 提取纯重量数值,去掉"kg"后缀
    $weight = (int) str_replace('kg', '', $weightStr);
    
    // 计算当前重量所属区间的起始和结束值
    $start = floor(($weight - 1) / $intervalStep) * $intervalStep + 1;
    $end = $start + $range;
    
    // 格式化区间键名
    $intervalKey = "{$start}kg-{$end}kg";
    
    // 累加对应区间的计数
    if (!isset($result[$intervalKey])) {
        $result[$intervalKey] = 0;
    }
    $result[$intervalKey] += (int)$count;
}

// 输出结果
print_r($result);

代码细节说明

  • 数值提取:用str_replace去掉kg后缀,转成整数后就能进行数学运算了。
  • 区间计算:通过floor(($weight - 1) / $intervalStep)确定重量所属的分组序号,再反推出区间的起始和结束值,保证每个区间连续不重叠且跨度为3kg。
  • 计数累加:遍历过程中检查结果数组是否已有该区间的键,没有就初始化为0,然后把当前计数加进去。

运行这段代码后,你会得到和示例完全一致的结果:

Array
(
    [85kg-88kg] => 5
    [89kg-92kg] => 3
    [97kg-100kg] => 1
)

如果之后需要调整区间范围(比如改成5kg),只需要修改$range的值就行,非常灵活~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:16:16