2016-06-20 4 views
0

я должен заполнить мою карту с номером посетителей, но при отображении текущей неделе данных я получил следующие дни значение 0.PHP получить следующие дни недели в зависимости от текущего дня недели

EG: сегодня в понедельник, поэтому я получаю 2016-06-20 как значение столбца, но следующее имя значения столбца равно 0, потому что у меня нет данных в течение следующих дней.

Индекс график должен быть похожим на это:

|| 20 Jun 2016 || 21 Jun 2016 || 22 Jun 2016 || 23 Jun 2016 || etc. 

И теперь я получил это:

|| 20 Jun 2016 || 1 Jan 1970 || 1 Jan 1970 || 1 Jan 1970 || etc. 

Так я пытался заполнить недостающие дни с помощью этой функции:

function get_day($count) { 
    if ($count == NULL) { 
     $dweek = date("w"); 
     for ($i = 1; $i <= 6; $i++) { 
      echo $i; 
      switch ($i) { 
       case 1: 
        $day = $dweek+1; 
        break; 
       case 2: 
        $day = $dweek+2; 
        break; 
       case 3: 
        $day = $dweek+3; 
        break; 
       case 4: 
        $day = $dweek+4; 
        break; 
       case 5: 
        $day = $dweek+5; 
        break; 
       case 6: 
        $day = $dweek+6; 
        break; 
      } 
     } 
     $current = date("d M Y",strtotime("+$day day")); 
    } else { 
     $current = date("d M Y",strtotime($count)); 
    } 
    return $current; 
} 

Но используя это сейчас, я получил:

|| 20 Jun 2016 || 27 Jun 2016 || 27 Jun 2016 || 27 Jun 2016 || etc. 

Так что мне что-то не хватает, но через 2 часа я не вижу, как это сделать.

Спасибо за помощь.

+0

Возвращение внутри 'переключателя()' это плохая идея, и функция может возвращать только одно значение один раз. –

+1

Итак, чтобы упростить: у вас есть дата начала и просто нужно сгенерировать следующие шесть дней после этой даты начала? – jszobody

+0

Ваша логика немного неправильная. Пожалуйста, введите код, который вы вызываете, и используя эту функцию. Я починю это. – Mojtaba

ответ

1

С использованием datetime и datetime.modify:

$res = "|| "; 

for ($d = 1; $d < 8; $d++) { 
    $dt = new DateTime(); 
    $m = $dt->modify("+$d days"); 
    $f = $m->format("d M Y"); 
    $res .= $f . " || "; 
} 

echo $res; 
+0

. Я пытаюсь выполнить эту функцию get_day ($ count) { \t if ($ count == NULL) { \t \t for ($ d = 0; $ d <6; $ d ++) { \t \t $ current = ((new DateTime()) -> modify ("+ $ d days")) -> format ('d M Y'); \t \t с} \t} еще { \t \t $ ток = дата ("Д М Г", StrToTime ($ кол)); \t} \t return $ current; }, но получил неожиданный оператор объекта (->) – andreaem

+0

Я все еще не понимаю вашего намерения, но в вашем коде есть опечатка. Она должна быть:. 'Функция get_day ($ Count = NULL) { , если (пусто ($ кол)) { \t для ($ D = 0; $ D <6; $ d ++) { \t \t $ тока = ((new DateTime()) -> modify ("+ $ d days")) -> format ('d M Y'); \t} } else { \t $ current = date ("d M Y", strtotime ($ count)); } return $ current; } ' –

+0

Вставка кода возвращает ту же ошибку:: синтаксическая ошибка, неожиданная '->' (T_OBJECT_OPERATOR) – andreaem

1
$date = '2016-06-20'; //replace this by your date 
$statement = ''; 
for($i = 0; $i < 7; $i++){ 
    $statement.= ' || ' . date('d M y', strtotime("$date +$i day")); 
} 
echo $statement; 

Теперь вы можете использовать дату вместо $ даты.

DEMO

+0

Спасибо, где я должен поставить эту часть кода? что я должен внести в утверждение if? – andreaem

+0

@andreaem, Извините. У меня было неправильное понимание. Я только что обновил код – Mojtaba

+0

Все еще получаю 26 июня 2016. – andreaem

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