如何在日历中高亮单个单元格且不影响表格正常对齐?
问题根因
对齐错位的核心原因是:高亮生日日期的逻辑分支中,遗漏了对$day_count变量的累加。
你在输出生日的<td>标签后,直接通过continue跳过了后续的$day_count++逻辑,导致每周7天的计数少了1,后续的单元格排版就会整体偏移。另外你写了两个完全重复的if ($day_num==$day_num_birthday)判断,属于冗余逻辑可以合并。
修复后代码
$day_num = 1; $day_num_birthday = 26; $birth_month = 7; if ($month == $birth_month) { while ($day_num <= $days_in_month) { if ($day_num == $day_num_birthday) { // 生日高亮输出 echo '<td bgcolor="red">' . $day_num . '</td>'; } else { // 普通日期输出 echo '<td>' . $day_num . '</td>'; } // 不管是不是生日,都要累加日期计数和周计数 $day_num++; $day_count++; // 满7天换行 if ($day_count > 7) { echo '</tr><tr>'; $day_count = 1; } } }
可选优化
bgcolor属于已被废弃的HTML属性,建议换成CSS样式实现高亮,兼容性和自定义灵活度更高:
echo '<td style="background-color: red; color: #fff;">' . $day_num . '</td>';
内容的提问来源于stack exchange,提问作者Snooky
相关产品推荐
相关产品推荐

