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

CodeIgniter3中foreach循环仅打印每组重复项末尾注释的实现问题

CodeIgniter3 数组重复组末尾打印Test_Comments的实现方法

你的原有代码逻辑是对比当前元素与上一个元素的Test_Comments值,不一致就立即输出,所以触发时机在分组的第一个元素位置,不符合末尾输出的要求。可以用以下两种方案修改:


方案1:预分组处理(逻辑清晰,推荐使用)

先按测试ID将数组划分为不同的组,遍历完单组所有条目后再输出该组的评论:

// 1. 按Test_ID对原数组分组
$groupedData = [];
foreach ($result as $item) {
    $groupedData[$item['Test_ID']][] = $item;
}

// 2. 遍历分组输出内容
foreach ($groupedData as $group) {
    // 先输出组内所有测试条目
    foreach ($group as $item) {
        // 此处替换为你原本打印单条测试信息的逻辑,比如打印测试名、结果值等
        echo $item['Test_Name'] . ':' . $item['Result_Value'] . '<br>';
    }
    // 组内条目输出完成后,打印当前组的评论,空评论自动跳过
    if (!empty($group[0]['Test_Comments'])) {
        echo $group[0]['Test_Comments'] . '<br>';
    }
}

方案2:直接遍历判断(适合小数据量场景,无需额外分组)

遍历过程中判断当前元素是否为所在组的最后一条,是则输出评论:

$totalCount = count($result);
foreach ($result as $key => $value) {
    // 此处替换为你原本打印单条测试信息的逻辑
    echo $value['Test_Name'] . ':' . $value['Result_Value'] . '<br>';
    
    // 判断是否为当前组最后一条:要么是数组最后一个元素,要么下一个元素不属于当前组
    $isLastItem = ($key == $totalCount - 1) || ($result[$key+1]['Test_ID'] != $value['Test_ID']);
    if ($isLastItem && !empty($value['Test_Comments'])) {
        echo $value['Test_Comments'] . '<br>';
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:03