PHP foreach循环下数据库无数据时未显示提示信息的问题
问题分析与修复方案
问题根源
你的代码无法在数据库无数据时显示提示信息,核心原因是空数据判断被放在了foreach循环内部。当$latest_tenders数组为空时,foreach循环根本不会执行,导致内部的else分支永远无法触发。
修复后的完整代码
<?php if(empty($latest_tenders)): ?> <p style=" font-size:13px; word-spacing: 5px;color:tomato;"> Tender Name: No advertised Tenders, Check again later. </p> <?php else: ?> <?php foreach($latest_tenders as $tenders): ?> <?php $time = strtotime($tenders['post_date']); $month = date('m', $time); switch($month){ case 1: echo "January "; break; case 2: echo "February "; break; case 3: echo "March "; break; case 4: echo "April "; break; case 5: echo "May "; break; case 6: echo "June "; break; case 7: echo "July "; break; case 8: echo "August "; break; case 9: echo "September "; break; case 10: echo "October "; break; case 11: echo "November "; break; case 12: echo "December "; break; default: echo "January "; } echo date('d', $time).', '; echo date('Y', $time).' '; echo date('h', $time).':'; echo date('i', $time).' | '; ?> <i class="fas fa-user"></i> <?php echo $tenders['author'];?></p> </div><br/> <?php endforeach; ?> <?php endif; ?>
关键修改说明
- 将空数组判断移至
foreach循环外部:通过if(empty($latest_tenders))直接检测数据源是否为空 - 分支逻辑调整:
- 数组为空时,直接输出提示信息
- 数组非空时,执行循环渲染每条招标信息
- 保留了原有的日期格式化和内容渲染逻辑,仅调整了判断的位置
内容的提问来源于stack exchange,提问作者Stephen Musyoka
相关产品推荐
相关产品推荐

