了解foreach循环[如果条件

时间:2016-04-22 06:12:39

标签: php codeigniter if-statement foreach

<?php foreach($get_break as $break ) : ?>
   <?php if($current_time >= $break['break_start'] &&  $current_time <= $break['break_end']) {  ?>
   <ul class="simple-user-list">
    <li>
        <figure class="image rounded">
            <img src="assets/images/!sample-user.jpg" alt="Joseph Doe Junior" class="img-circle">
        </figure>
        <span class="title">i'm still exists</span>
        <span class="message truncate">Lorem ipsum dolor sit.</span>
    </li>
</ul>
<?php } elseif($break['break_type'] == "Additional break") { ?>
<ul class="simple-user-list">
    <li>
        <figure class="image rounded">
            <img src="assets/images/!sample-user.jpg" alt="Joseph Doe Junior" class="img-circle">
        </figure>
        <span class="title">i'm not exists</span>
        <span class="message truncate">Lorem ipsum dolor sit.</span>
    </li>
</ul>
<?php } ?>
<?php endforeach ?>

我想根据时间显示休息时间。 我打破了包含各种中断类型的主表,包括中断开始时间和中断结束时间。 根据当前时间,我想显示休息时间。 在这里,我使用foreach从break表中获取数据 并使用if检查条件。检查休息时间。 对于当前时间,应显示特定中断。 问题是,这里如果条件显示当前,在else部分中,即使if条件为真,它也会显示附加中断。 我该怎么办?如果当前时间不存在当前中断,则显示唯一中断。它会显示额外的休息时间。

1 个答案:

答案 0 :(得分:1)

你不能用日期字符串做数学。使用strtotime()函数对日期进行数学运算。

详细了解here

所以你得到这样的东西:

if(strtotime($current_time) >= strtotime($break['break_start']) &&  strtotime($current_time) <= strtotime($break['break_end'])) {
    //dothis
}
  

strtotime - 将任何英文文本日期时间描述解析为Unix时间戳

因此,如果您的日期设置不像英语方式(2016年12月11日),请使用date()将其转换为合适的日期字符串。