用PHP循环无法将数据库中的日期与当前日期匹配

时间:2018-07-20 09:31:49

标签: php codeigniter loops codeigniter-3

在我问这个问题之前,但是还有另一个问题,我被困在这里。我正在尝试在数据库中显示当天的数据,哪一天将与月份中的日期匹配,但我不知道如何进行脚本迭代,如何解决?

我的桌子

| id| Payment |  day | Month |  Year |
|___|_________|__ ___|_______|_______|
| 1 |  Mobile |  2   |   7   |  2018 |
| 2 |  Mobile |  3   |   7   |  2018 |
| 3 |  Mobile |  4   |   7   |  2018 |
| 4 |  Mobile |  5   |   7   |  2018 |
| 5 |  Mobile |  8   |   7   |  2018 |
| 6 |  Mobile |  9   |   7   |  2018 |
| 7 |  Mobile |  10  |   7   |  2018 |
| 8 |  Mobile |  11  |   7   |  2018 |

我的查询

$q_day = $this->db->select('*')->from('payment_day')->where('Month', 7)->where('Year', 2018)->get()->result_array();

$day = 31;

for ($x = 1; $x <= $day; $x++) {
    foreach($q_day as $row){
        if($x == $row['day']){
            echo '<td>x</td>';
        }else{
            echo '<td>-</td>';
        }
    }
}

我希望结果如下表

| DAY | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | xxxxxx
|     | - | x | x | x | x | - | - | x | x |  x |  x |  - |  - | 14 | xxxxxx

2 个答案:

答案 0 :(得分:3)

在这里您可以创建一个密钥为天的数组,然后使用条件是否循环进行检查。

$q_day = $this->db->select('*')->from('payment_day')->where('Month', 7)->where('Year', 2018)->get()->result_array();
 //try create array from loop    
 $avaiableDays = [];
 foreach($q_day as $row){
   $avaiableDays[$row['day']] = $row;
 }

$day = 31;

for ($x = 1; $x <= $day; $x++) {
    if(!empty($avaiableDays[$x])){
           echo '<td>x</td>';
       }else{
           echo '<td>-</td>';
       }
   }
}

答案 1 :(得分:0)

 $q_day = $this->db->select('day')->from('payment_day')->where('Month', 7)->where('Year', 2018)->get()->result_array();

 $day = 31;

 for ($x = 1; $x <= $day; $x++) {
     in_array($x,$q_day){
        echo '<td>x</td>';
     }else{
        echo '<td>-</td>';
     }  
 }