循环进入PHP中的查询和数组

I have a table containing some date for dates:

___BillableDatas:

|----------|------------|---------------|
|BIL_Id    | BIL_Date   | BIL_BookingID |
|----------|------------|---------------|
| 1        | 2017-01-01 | 10            |
| 2        | 2017-01-02 | 10            |
| 3        | 2017-01-06 | 11            |
| 4        | 2017-01-07 | 11            |
| 5        | 2017-01-08 | 11            |
| 6        | 2017-01-12 | 14            |
|----------|------------|---------------|

And I have this array giving me all the dates between two dates:

$dates = getDatesFromRange('2017-01-01', '2017-01-15');

Array ( [0] => 2017-01-01 [1] => 2017-01-02 [2] => 2017-01-03 [3] => 2017-01-04 [4] => 2017-01-05 [5] => 2017-01-06 [6] => 2017-01-07 [7] => 2017-01-08 [8] => 2017-01-09 [9] => 2017-01-10 [10] => 2017-01-11 [11] => 2017-01-12 [12] => 2017-01-13 [13] => 2017-01-14 )

I want to be able to loop into this table to get all the days between a period (from 2017-01-01 to 2017-01-15 for example).

For example, the desired output should be the following Json or array:

"datas": {
    "2017-01-01": {
        "bookingId": "10"
    },
    "2017-01-02": {
        "bookingId": "10"
    },
    "2017-01-03": {
        "bookingId": "0"
    },
    "2017-01-04": {
        "bookingId": "0"
    },
    "2017-01-05": {
        "bookingId": "0"
    },
    "2017-01-06": {
        "bookingId": "11"
    },
    "2017-01-07": {
        "bookingId": "11"
    },
    "2017-01-08": {
        "bookingId": "11"
    },
    "2017-01-09": {
        "bookingId": "0"
    },
    "2017-01-10": {
        "bookingId": "0"
    },
    "2017-01-11": {
        "bookingId": "0"
    },
    "2017-01-12": {
        "bookingId": "14"
    },
    "2017-01-13": {
        "bookingId": "0"
    },
    "2017-01-14": {
        "bookingId": "0"
    },
    "2017-01-15": {
        "bookingId": "0"
    }
}

Any help please.

Thanks.

If i am not wrong you wants result including all the date range between two dates regardless it's present in DB table or not

you can loop and compare available date and create your desire array or json.

$new_array = array();
 foreach ($dates as $date){  // date range from "2017-01-01" to "2017-01-15"  
     $avalilable = 0;
        foreach ($bills as $bill){ // records From __BillableDatas table 
            if($bill->BIL_Date == $date)
            {
                $avalilable = 1;
                $new_array[$date] = array("bookingId" =>  $bill->BIL_BookingID);
                break;  
            }   
    } 
    if(!$avalilable)
        $new_array[$date] = array("bookingId" =>  0);
 }
   echo  json_encode($new_array);

Hope this will help

If I understood your question correctly, then below is the way to calculate number of days between 2 dates. No need for loop.Comment on this if you think otherwise

<?php
$from = strtotime('2017-01-01'); 
$to = strtotime("2017-01-15");
$datediff = $to - $from;

echo floor($datediff / (60 * 60 * 24));

?>