PHP中如何通过条件判断显示date_till或date_till2日期?
解决日期显示异常及双日期字段切换问题
你遇到的30.11.-0001是PHP处理空/无效日期字段时返回的默认值,要实现优先显示date_till、无有效数据时切换到date_till2的逻辑,只需要在输出日期的位置增加条件判断即可。
修改后的完整代码
<?php foreach ($items as $k => $v): ?> <tr> <td><?= $v['number'] ?></td> <td><?= $v['date_from'] ?></td> <td> <?php // 定义无效日期标识 $invalidDate = '30.11.-0001'; // 优先使用date_till,若为空或等于无效日期则用date_till2 $displayDate = (!empty($v['date_till']) && $v['date_till'] !== $invalidDate) ? $v['date_till'] : ($v['date_till2'] ?? ''); echo $displayDate; ?> </td> <td><?= $v['dealer_title'] ?></td> <td><?= $v['producer_title'] ?><?= $v['sys_create'] ?></td> <td><?php echo nl2br($v['producer_address']); ?><?php echo nl2br($v['sys_create_address']); ?></td> <td><?= nl2br($v['offers_title']) ?><?= nl2br($v['sfera']) ?></td> <td><?= $v['status'] ?></td> </tr> <?php endforeach; ?>
关键逻辑说明
- 先定义无效日期的固定值
30.11.-0001,统一判断标准 - 通过三元运算符做两层判断:
- 检查
date_till是否非空且不是无效日期,满足则使用该字段值 - 不满足的话,切换到
date_till2,同时用?? ''处理date_till2也为空的情况,避免输出其他异常值
- 检查
- 如果你用的是MySQL这类支持条件查询的数据库,也可以在SQL查询阶段直接处理,减少PHP层面的逻辑:
SELECT -- 其他字段... CASE WHEN date_till IS NOT NULL AND date_till != '0000-00-00' THEN date_till ELSE date_till2 END AS display_date FROM your_table;
这样PHP代码里直接输出$v['display_date']即可,代码会更简洁。
内容的提问来源于stack exchange,提问作者ZHMEN
相关产品推荐
相关产品推荐

