2015-08-29 3 views
0

Я пытаюсь получить даты между от и до настоящего времени. Используя класс datetime , он отлично работает, но когда я использую его с динамическим результатом, например, foreach внутри foreach, даты удваиваются. Я пробовал использовать unique_array, но не повезло. Какие-либо предложения? :)php предотвратить foreach в foreach double

Availabledates скриншот содержимого (игнорировать запятой):

enter image description here

Пример:

$result = $wpdb->get_results('SELECT fdate, tdate FROM availabledates'); 
    foreach($result as $data): 
     $fdate = date('Y-m-d', $data->fdate); 
     $tdate = date('Y-m-d', $data->tdate); 

     $begin = new DateTime($fdate); 
     $end = new DateTime($tdate); 

     $daterange = new DatePeriod($begin, new DateInterval('P1D'), $end); 
     foreach($daterange as $date){ 
      echo $date->format("Y-m-d") . "<br>"; 
     } 
    endforeach; 

Link to fiddle

+1

Есть ли несколько строк в таблице 'availabledates'? –

+1

Мне трудно воспроизвести ошибку (с жестко закодированными значениями вместо того, чтобы вытаскивать из базы данных, но все равно кажется, что результат будет аналогичным.) Можете ли вы более подробно описать, как результат удваивается? Каждый день печатается дважды подряд, т. Е. «2015-06-30, 2015-06-30, 2015-07-01, 2015-07-01 и т. Д.», Или весь набор дат печатается дважды? –

+0

Хм .. В основном это просто испортить заказ. Я думаю, что лучше всего объяснить, что он дублирует контент. Я не думаю, что foreach внутри foreach - лучшее решение, может быть, есть другое решение? :) – simon

ответ

0

Хорошо. Я не знаю, что чувствовать. Я узнал, что диапазон был настолько большим, что я думал, что это ошибка. Оказалось, что нет. Он имел диапазон 40 дней. Я должен был обратить больше внимания. Спасибо за ваше время: не паникуйте :)