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

PHP及CakePHP中foreach循环按country_id去重国家记录并统计项目数求助

你的代码之所以出现重复国家记录,是因为逻辑是边遍历项目列表边输出表格行,同一个国家对应多个项目时就会重复输出多次。需要先完成全量项目的数量统计,再统一遍历统计结果输出无重复的国家列表,修改后代码如下:

<table>
    <tr>
        <th>Country ID</th>
        <th>Country Name</th>
        <th>Number of Place</th>
    </tr>

    <?php 
    // 第一步:统计每个country_id对应的项目总数
    $country_stats = [];
    foreach ($projects as $project) {
        $country_id = $project['Project']['country_id'];
        if (!isset($country_stats[$country_id])) {
            // 首次出现该国家时初始化统计,如需存储国家名称可在这里补充字段
            $country_stats[$country_id] = [
                'count' => 0,
                // 'country_name' => $project['Project']['country_name'] 若数据中有国家名字段可取消注释
            ];
        }
        $country_stats[$country_id]['count']++;
    }

    // 第二步:遍历统计结果输出表格,每个国家仅输出一行
    foreach ($country_stats as $country_id => $stat) {
    ?>
        <tr>
            <td style="width: 30%"><?php echo $country_id; ?></td>
            <td style="width: 30%"><?php echo 'Country Name'; // 如需显示真实国家名可替换为$stat['country_name'] ?></td>
            <td style="width: 30%"><?php echo $stat['count']; ?></td>
        </tr>
    <?php 
    } 
    ?>

</table>

改动逻辑说明:

  • 拆分统计和输出流程,先完成全量数据统计再输出,彻底避免重复记录
  • 统计数组支持扩展存储国家名称等关联字段,后续功能迭代可直接复用
  • 最终输出的表格每行对应唯一country_id,自动携带该国家的项目总数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:05