2015-12-29 2 views
0

Я пытаюсь получить даты начала и окончания базы данных, сгенерировать даты диапазона между началом и концом, создать массив, чтобы я мог отключить их в datepicker. Проблема в том, что я получаю несколько массивов. Как я могу объединить их в один массив?Объединить несколько массивов из цикла foreach

Вот что у меня есть:

$datestartend = mysql_query("SELECT * FROM booking"); 
while ($result = mysql_fetch_array($datestartend)){ 


$begin = new DateTime($result['tdate']); 
$end = new DateTime($result['ldate']); 

$interval = new DateInterval('P1D'); // 1 Day 
$dateRange = new DatePeriod($begin, $interval, $end); 

$range = []; 
foreach ($dateRange as $date) { 
    $range[] = $date->format('d-m-Y'); 
    } 

echo json_encode($range); 


} 

Вот что я получаю:

["11-11-2016","12-11-2016","13-11-2016","14-11-2016"]["11-02-2016","12-02-2016","13-02-2016","14-02-2016","15-02-2016","16-02-2016"]["22-08-2016","23-08-2016","24-08-2016","25-08-2016","26-08-2016","27-08-2016","28-08-2016","29-08-2016"]["21-10-2016","22-10-2016","23-10-2016","24-10-2016","25-10-2016","26-10-2016","27-10-2016","28-10-2016","29-10-2016","30-10-2016"] 

Вот что я хочу:

["11-11-2016","12-11-2016","13-11-2016","14-11-2016","11-02-2016","12-02-2016","13-02-2016","14-02-2016","15-02-2016","16-02-2016","22-08-2016","23-08-2016","24-08-2016","25-08-2016","26-08-2016","27-08-2016","28-08-2016","29-08-2016","21-10-2016","22-10-2016","23-10-2016","24-10-2016","25-10-2016","26-10-2016","27-10-2016","28-10-2016","29-10-2016","30-10-2016"] 
+0

вы попробовать 'array_push ($ диапазон, $ Дата-> Формат ('дм-Y');' –

+0

спасибо @JohnPangilinan, но я все еще получаю то же самое? результаты – mccfokl

ответ

0

Я думаю, что это не дает вам ваш желаемый результат, потому что для каждого цикла $range = []; приведет к пустующему массиву. Затем вы заполняете массив данными, и вы эхо-данные echo json_encode($range);

В следующем цикле предыдущее произойдет снова, поэтому вы видите обозначения нескольких массивов.

Это может помочь при перемещении массива $range = []; вне цикла while и переместить это утверждение echo json_encode($range); вправо после цикла while.

Например:

$datestartend = mysql_query("SELECT * FROM booking"); 
$range = []; 
while ($result = mysql_fetch_array($datestartend)){ 
    $begin = new DateTime($result['tdate']); 
    $end = new DateTime($result['ldate']); 

    $interval = new DateInterval('P1D'); // 1 Day 
    $dateRange = new DatePeriod($begin, $interval, $end); 

    foreach ($dateRange as $date) { 
     $range[] = $date->format('d-m-Y'); 
    } 
} 

echo json_encode($range); 
+0

это сработало! thamk you Четвертая птица! – mccfokl

Смежные вопросы