codeigniter 如何在php中设置一个条件-显示一个或另一个日期?

ohtdti5x  于 2023-06-19  发布在  PHP
关注(0)|答案(2)|浏览(91)

如何在此构造中创建条件-显示一个或另一个日期?

<?php foreach ($items as $k => $v): ?>
            <tr>
                <td><?= $v['number'] ?></td>
                <td><?= $v['date_from'] ?></td>
                <td><?= $v['date_till'] ?></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; ?>

数据库有两个表:date_tilldate_till2。如有必要,日期必须从date_tilldate_till2开始显示。此时,如果date_till表中没有数据,则显示错误的日期:30.11.-0001。提前感谢任何帮助!

jecbmhm3

jecbmhm31#

下面是一个可读性更强的示例,其中包含额外的测试和安全处理(未经测试):

foreach ( $items as $item ) {
    // If date_till is empty, set to date_till2;
    if ( empty( $item['date_till'] ) ) {
        $item['date_till'] = $item['date_till2'];
    }

    // If date_till is still empty, then we've no date: set to "Unknown".
    if ( empty( $item['date_till'] ) ) {
        $item['date_till'] = 'Unknown';
    }

    echo '<tr>';

    printf( '<td>%s</td>', esc_html( $item['number'] ) );
    printf( '<td>%s</td>', esc_html( $item['date_from'] ) );
    printf( '<td>%s</td>', esc_html( $item['date_till'] ) );
    printf( '<td>%s</td>', esc_html( $item['dealer_title'] ) );

    printf( 
        '<td>%s%s</td>', 
        esc_html( $item['producer_title'] ), 
        esc_html( $item['sys_create'] ) 
    );

    printf( 
        '<td>%s%s</td>', 
        nl2br( esc_html( $item['producer_address'] ) ), 
        nl2br( esc_html( $item['sys_create_address'] ) ) 
    );

    printf(
        '<td>%s%s</td>',
        nl2br( esc_html( $item['offers_title'] ) ),
        nl2br( esc_html( $item['sfera'] ) )
    );

    printf( '<td>%s</td>', esc_html( $item['status'] ) );

    echo '</tr>';
}

三进制运算符因其简洁性而很有价值,这在某些情况下更具可读性,但在大多数情况下会降低可读性。

bwntbbo3

bwntbbo32#

解决方案是在PHP代码中使用三元运算符:

<?php foreach ($items as $k => $v): ?>
    <tr>
        <td><?= $v['number'] ?></td>
        <td><?= $v['date_from'] ?></td>
        <td><?= $v['date_till'] ? $v['date_till'] : $v['date_till2'] ?></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; ?>

要使其根据您的日期格式工作,您需要修改模型文件:

if (isset($_POST['date_till']) && $_POST['date_till']) {
    $dateTill = date('Y-m-d', strtotime($_POST['date_till']));
    $data['date_till'] = ($dateTill != '0000-00-00') ? $dateTill : NULL;
}

相关问题