【问题标题】:make date array from multiple date range in PHP从PHP中的多个日期范围制作日期数组
【发布时间】:2018-06-30 18:56:16
【问题描述】:

我有选择 SQL Server 的代码:

<?php
include "koneksi.php";
$sql=odbc_exec($koneksi,"select * from trip");
while(odbc_fetch_row($sql)){
$no=odbc_result($sql,"number");
$start=odbc_result($sql,"start");
$finish=odbc_result($sql,"finish");
}
?>

这个循环包含以下数据:

|No|   Start  |  Finish  |
|1 |2018-01-01|2018-01-05|
|2 |2018-01-10|2018-01-13|

我想做这样的数组:

array(
"2018-01-01",
"2018-01-02",
"2018-01-03",
"2018-01-04",
"2018-01-05",
"2018-01-10",
"2018-01-11",
"2018-01-12",
"2018-01-13"
);

如何从这个日期范围创建一个数组?

注意:循环可以超过 2 行

【问题讨论】:

    标签: php mysql arrays while-loop


    【解决方案1】:

    这是一个如何获取数组的示例:

    <?php
    while(odbc_fetch_row($sql)){
      $no=odbc_result($sql,"number");
      $start=odbc_result($sql,"start");
      $finish=odbc_result($sql,"finish");
      $arr = addIntoArray($arr, $start, $finish);   
    }
    
    function addIntoArray($arr, $start, $end) {
      $ts1 = strtotime($start);
      $ts2 = strtotime($end);
      for($ts=$ts1; $ts<=$ts2; $ts=$ts+86400)  {
        $arr[] = date('Y-m-d', $ts);
      }
      sort($arr);
      return $arr;
    }
    

    【讨论】:

      【解决方案2】:

      你可以试试这样的:

      while (...) {
      
          $start=odbc_result($sql,"start");
          $finish=odbc_result($sql,"finish");
      
      
          $start_tm = strtotime($start) ;
          $finish_tm = strtotime($finish) ;
      
          while ($start_tm < $finish_tm) {
              $dates[] = date('Y-m-d', $start_tm) ;
              $start_tm = strtotime('+1 day', $start_tm) ;
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        相关资源
        最近更新 更多