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

PHP按条件统计数组元素并在HTML表格展示的问题

PHP按积雪深度区间统计各月数据并生成表格的简洁实现

实现思路

  • 统一定义所有需要统计的积雪深度区间,避免重复编写判断逻辑
  • 提前初始化1-12月的统计结构,每个月份的每个区间计数初始为0
  • 仅遍历一次原始数据数组完成全区间统计,从根源避免重复统计问题
  • 动态生成HTML表格,后续修改区间或月份范围无需大幅改动代码

完整代码示例

<?php
// 示例原始数据(替换为你的实际数组)
$Array = [
    ['fMonth' => 1, 'fSnowDepth' => 2],
    ['fMonth' => 1, 'fSnowDepth' => 4],
    ['fMonth' => 2, 'fSnowDepth' => 3],
    ['fMonth' => 2, 'fSnowDepth' => 6],
    ['fMonth' => 3, 'fSnowDepth' => 0.5],
    ['fMonth' => 3, 'fSnowDepth' => 2.5],
    // 可添加更多数据
];

// 定义积雪深度区间:键为区间显示文本,值为判断深度是否属于该区间的闭包
$depthRanges = [
    '<1' => fn($d) => $d < 1,
    '1≤fSnowDepth<3' => fn($d) => $d >= 1 && $d < 3,
    '3≤fSnowDepth<5' => fn($d) => $d >= 3 && $d < 5,
    '≥5' => fn($d) => $d >= 5,
];

// 初始化统计结果:1-12月,每个区间计数初始为0
$stats = [];
for ($month = 1; $month <= 12; $month++) {
    $stats[$month] = array_fill_keys(array_keys($depthRanges), 0);
}

// 遍历原始数据,统计每个月份各区间的数量
foreach ($Array as $item) {
    $month = $item['fMonth'];
    $depth = $item['fSnowDepth'];
    
    // 跳过无效月份(如超出1-12的情况)
    if (!isset($stats[$month])) continue;
    
    // 匹配对应深度区间并累加计数
    foreach ($depthRanges as $rangeName => $isInRange) {
        if ($isInRange($depth)) {
            $stats[$month][$rangeName]++;
            break; // 每个深度仅属于一个区间,找到后停止匹配
        }
    }
}

// 输出HTML表格
echo '<table border="1" cellpadding="8" cellspacing="0">';
// 表头
echo '<tr>';
echo '<th>月份</th>';
foreach (array_keys($depthRanges) as $range) {
    echo "<th>{$range}</th>";
}
echo '</tr>';
// 表体:逐行输出每个月的统计数据
foreach ($stats as $month => $counts) {
    echo '<tr>';
    echo "<td>{$month}月</td>";
    foreach ($counts as $count) {
        echo "<td>{$count}</td>";
    }
    echo '</tr>';
}
echo '</table>';
?>

关键细节说明

  • 区间灵活调整:新增或修改区间仅需调整$depthRanges数组,统计逻辑无需改动
  • 杜绝重复统计:单次遍历原始数组,每个数据项仅被统计到对应区间,无重复计数问题
  • 代码简化:使用PHP 7.4+箭头函数fn()简化闭包写法,array_fill_keys快速生成初始统计结构,减少冗余代码
  • 容错处理:自动跳过无效月份,避免数据异常导致的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:41:33