Как повернуть различные данные в дни недели в php

Я работаю над проектом, в котором я должен распространять разные объявления в день, объявление в форме массива:

$ad = array( 'attribute1_value' => "12", 'attribute2_value' => "xyz", 'attribute3_value' => 'http://example.com', 'attribute4_value' => 'data'); 

Логику, которую я использую с корпусом коммутатора:

 $day = date('w',time()); switch ($day) { case '0': if($day == '0') { $count = 0; echo $ad; $count++; } else { $count = 7; echo $ad; } break; case '1': if($day == '1') { $count = 1; echo $ad; $count++; } else { $count = 8; echo $ad; } break; 

Проблема в том, что если у меня есть ~ 15 объявлений, тогда я хочу распространять выходные данные в день / день, дату ('w') на сегодняшний день, но после 7-го дня, т.е. субботу, в воскресенье, номер объявления 8 начинается. Я должен реализовать этот сценарий, используя функцию даты. Также я должен отправить объявление тем пользователям, которые раньше не испытывали это объявление. Я не эксперт в php, как новичок, работающий в php / mysql. Пожалуйста, помогите мне улучшить эту концепцию

Solutions Collecting From Web of "Как повернуть различные данные в дни недели в php"

В вашем текущем коде есть некоторые проблемы. Во-первых, с логикой:

  case '0': //<!-- ensures the following code executes only where $day == 0 if($day == '0') { //<!-- therefore this will run $count = 0; echo $ad; $count++; } else { //<!-- but this can never run $count = 7; echo $ad; } 

Кроме того, вы выбрали $ads , который представляет собой массив. Вам нужно выделить элемент из массива.

Если вы хотите, чтобы один понедельник пользовался объявлением 1 и в следующий понедельник для использования объявления 8, date('w') не будет очень полезной, так как это просто циклически продолжается от 0 до 6, поэтому для этого это не подходит. Он не имеет памяти об общем номере дня месяца или года – его объем – только текущая неделя.

Вместо этого вы можете использовать день месяца [edit – или, конечно, день года ( date('z') ). См. Комментарий внизу).

 $day = date('d'); $ads = array('ad 1', 'ad 2', 'ad 3', 'ad 4', 'ad 5', 'ad 6', 'ad 7', 'ad 8', 'ad 9', 'ad 10', 'ad 11', 'ad 12'); echo $ads[($day - 1) % count($ads)]; 

Итак, в пятый день месяца показано объявление 5. На 7-й день показано объявление 7. На 14-й день, как показано на рисунке 2, он снова начинает цикл рекламы.

Что касается того, как обеспечить, чтобы пользователь не видел объявление раньше, это еще один вопрос, и я предлагаю вам опубликовать его как таковой. Предположительно, это предполагает наличие какой-либо системы cookie, если только пользователи не вошли в систему, и в этом случае вы могли бы отслеживать эту вещь на стороне сервера.