嵌套foreach循环重复输出求助:按对应列展示故事
解决列与故事匹配重复输出的问题
你的问题根源在于嵌套循环的逻辑错误:外层每循环一个列,内层就遍历所有故事,导致每个列都会重复显示全部故事。我们需要先把故事按所属column_id分组,再和对应列匹配展示。
步骤1:先将故事按column_id分组
在循环前先处理$this->getstories数组,把同属一个列的故事归为一组:
// 初始化分组数组 $storiesByColumn = []; foreach ($this->getstories as $story) { // 用column_id作为键,将故事存入对应分组 $columnId = $story['column_id']; $storiesByColumn[$columnId][] = $story; }
步骤2:修改循环逻辑,匹配对应列的故事
现在遍历列时,只取出该列column_id对应的故事展示,无故事则只显示列名:
foreach ($this->getcolumnname as $columnname): $columnId = $columnname['column_id']; ?> <div class="panel-heading panel-bgwhite"> <b><?php echo $columnname['Column_name'] ?></b> <!-- 仅展示当前列对应的故事 --> <?php if (isset($storiesByColumn[$columnId])): ?> <?php foreach ($storiesByColumn[$columnId] as $story): ?> <p><?php echo $story['i_description']; ?></p> <?php endforeach; ?> <?php endif; ?> </div> <?php endforeach; ?>
效果说明
修改后就能实现预期效果:
- 每个列名仅展示一次
- 故事只会出现在对应的列下方(比如Backlog列显示
s2,WIP列显示s1) - 无故事的列(如DOD、COMP等)仅显示列名,不会出现空内容或重复故事
内容的提问来源于stack exchange,提问作者shythya menon
相关产品推荐
相关产品推荐

