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
相关产品推荐
相关产品推荐

