You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,统一判断标准
  • 通过三元运算符做两层判断:
    1. 检查date_till是否非空且不是无效日期,满足则使用该字段值
    2. 不满足的话,切换到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:38:28