У меня есть график, который показывает еженедельные посещения сайта, значения находятся в формате «d MY», и данные будут возвращены из база данных.PHP: Получите следующие дни недели в зависимости от текущего дня недели, затем отобразите на диаграмме ярлык
В текущем состоянии отображаются только ярлыки на дни, которые я получил (например, 1 августа 2016 года и сегодня).
Я также возвращаю следующие дни на каждом ярлыке (для каждого дня недели), но помните текущий день недели (например, если среда должна вернуться 3 августа 2016 года, если четверг возвращается 4 августа 2016 года и т. Д.) Относительно текущего дня недели, поэтому, если в понедельник (и у меня есть данные) возвращается значение из базы данных, если вторник (сегодня) возвращает данные из базы данных, но если это среда, рассчитывается, что мы получили третий день недели, поэтому добавляет +1 к текущей дате, если он будет в четверг добавляет +2 и т. д. Надеюсь, я объяснил, насколько это возможно, в результате я пытаюсь достичь
Я пытался сделать PHP-переключатель, но не могу достичь результата с помощью этого, и я думаю, что моя логика совершенно неверна.
function get_day($date,$daynum) {
$dayofweek = date("w",strtotime($date));
switch ($daynum) {
case '1':
if ($date == NULL) {
$current = date('d M Y',strtotime("$date +1 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
case '2':
if ($date == NULL) {
$current = date('d M Y',strtotime("$date +2 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
case '3':
if ($date == NULL) {
$current = date('d M Y',strtotime("$date +3 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
case '4':
if ($date == NULL) {
$current = date('d M Y',strtotime("$date +4 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
case '5':
if ($date == NULL) {
$current = date('d M Y',strtotime("$date +5 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
case '6':
if ($date == NULL) {
$current = date('d M Y',strtotime("$date +6 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
case '7':
if ($date == NULL) {
$current = date('d M Y', strtotime("$date +7 day"));
} elseif ($date == date("d M Y")) {
$current = 'Oggi';
} else {
$current = date("d M Y",strtotime($date));
}
break;
}
return $current;
}
Я звоню это с помощью
get_day($siteViewsThisWeek[0][1],'1');
get_day($siteViewsThisWeek[1][1],'2');
get_day($siteViewsThisWeek[2][1],'3');
[...]
Спасибо всем, кто может помочь.
Извините за мое неправильное объяснение, я не очень хорошо по-английски. Я конвертирую дату, потому что даты в базе данных в формате Y-M-d извините, если я не буду говорить об этом. Вместо этого я в настоящее время использую ваш код (похожий на его вчерашнюю версию), но я получил только первый день в правильном значении, следующие дни начинаются с 4 дней назад, например: 03-08-2016, 07-08 -2016, 08-08-2016, 09-08 .. Это потому, что мне нужно сначала рассчитать текущий день недели. http://i64.tinypic.com/21ex1g4.png – andreaem
Используя ваш код, я добавил в верхнюю часть этих двух строк $ dayofweek = 'date (" w ", strtotime ($ date)); \t if ($ daynum == $ dayofweek) {$ daynum = 1; } else if ($ daynum == $ dayofweek + 1) {$ daynum = 2; } else if ($ daynum == $ dayofweek + 2) {$ daynum = 3; } else if ($ daynum == $ dayofweek + 3) {$ daynum = 4; } else if ($ daynum == $ dayofweek + 4) {\t $ daynum = 5; } else if ($ daynum == $ dayofweek + 5) {$ daynum = 6; } else if ($ daynum == $ dayofweek + 6) {\t $ daynum = 7; } '. Используя это, я получил следующие дни, как я ожидаю – andreaem