Четный / нечетный + день недели
-
Доброго дня, товарищи.
Подскажите, как можно реализовать следующую идею:
выводить на определенной странице контент в зависимости от того, четный или нечетный день. А если углубиться, то в идеале еще завязаться на день недели.
т.е.
если сегодня четное число и день недели понедельник, то выводим «1»
если сегодня нечетное число и день недели понедельник, то выводим «2»
и так далее.
Сталкивался ли кто-нить с подобным?
-
Используйте доки PHP для работы с датой http://php.net/manual/ru/function.date.php
Алгоритм такой (примерно):
1. Получаете текущий день (число)date('j');
2. Получаете день неделиdate('w');
илиdate('N');
3. Проверяете «четность»if ($var%2 == 0) { чет } else { нечет }
*
3. Выводите необходимый контент.—
*Обратите внимание, что ПН, в том и другом случае, будет нечетным.в таком случае у меня получается 14 условий:
четное && понедельник
четное && вторник
…
if (($var%2 == 0) && (date(«N») == 1))
if (($var%2 == 0) && (date(«N») == 2))
if (($var%2 == 0) && (date(«N») == 3))
if (($var%2 == 0) && (date(«N») == 4))
if (($var%2 == 0) && (date(«N») == 5))
if (($var%2 == 0) && (date(«N») == 6))
if (($var%2 == 0) && (date(«N») == 7))
if (($var%2 == 1) && (date(«N») == 1))
if (($var%2 == 1) && (date(«N») == 2))
if (($var%2 == 1) && (date(«N») == 3))
if (($var%2 == 1) && (date(«N») == 4))
if (($var%2 == 1) && (date(«N») == 5))
if (($var%2 == 1) && (date(«N») == 6))
if (($var%2 == 1) && (date(«N») == 7))есть мысли как это упростить?
в таком случае у меня получается 14 условий:
Впечатляет 🙂
есть мысли как это упростить?
Есть. Я, когда испытываю трудности с визуализацией алгоритма в уме, рисую на листочке https://ru.wikipedia.org/wiki/Блок-схема
Помогает добиться результата за меньшее число шагов. Попробуйте.
Мой вариант будет таким (за достоверность не ручаюсь, и для применения к вашей задаче потребует подгонки):$day = date('j'); $weekday = date('N'); echo ( $day%2 ) //Нечетный день: 1,3,5,7,9... ? ( ( $weekday%2 ) //Нечетный день недели: Пн,Ср,Пт,Вс ? 'Среда 11' : 'Четверг 23' ) //Первый: оба ДА, Второй: первый ДА, второй НЕТ : ( ( $weekday%2 ) //Четный день и Нечетный день недели ? 'Пятница 14' : 'Суббота 30' ); //Первый: оба ДА, Второй: Первый ДА, второй НЕТ
Мог и запутаться с комментариями 😀
Может и существует более элегантное решение, не искал )Переписал с комментариями в нужном месте, для лучшего понимания:
echo ( $day%2 ) ? //Нечетное число 1,3,5,7,9... ( ( $weekday%2 ) ? 'Среда 11' //Нечетный день недели ПН,СР,ПТ,ВС : 'Четверг 23' ) //Четный день недели ВТ,ЧТ,СБ : //Четное число 2,4,6,8,10.... ( ( $weekday%2 ) ? 'Пятница 14' //Нечетный день недели ПН,СР,ПТ,ВС : 'Суббота 30' ); //Четный день недели ВТ,ЧТ,СБ
switch ( ( date( 'j' ) % 2 ) * 10 + date( 'N' ) ) { case 1 : // четный понедельник .... case 17 : // нечетное воскресенье }
😉
😉
я тоже сначала хотел с кейсами, но мне тернары больше нравятся 🙂
😉
:DDD
switch (date('j') % 2 . date('N') % 2) { case '00': echo 'оба четные'; break; case '01': echo 'четное число. нечетный день недели'; break; case '10': echo 'нечетное число. четный день недели'; break; default: echo 'оба нечетные'; break; }
:DDD
У-упс 🙂 patch
switch ( (int)(bool)( date('j') % 2 ) . (int)(bool)( date('N') % 2 ) )
Подскажите, как можно реализовать следующую идею:
выводить на определенной странице контент в зависимости от того, четный или нечетный деньhttps://wordpress.org/plugins/shortcodes-ultimate/
В этом плагине, после его последнего обновления, появилась новая и очень интересная функция — показ\скрытие контента по любому произвольному расписанию. Этот раздел называется «Планировщик»
Вот что получается:
switch (date('j') % 2 . date('N')) { // Нечетное число. День недели - Понедельник case '11': query_posts('p=223'); break; // Нечетное число. День недели - Вторник case '12': query_posts('p=227'); break; // Нечетное число. День недели - Среда case '13': query_posts('p=231'); break; // Нечетное число. День недели - Четверг case '14': query_posts('p=235'); break; // Нечетное число. День недели - Пятница case '15': query_posts('p=239'); break; // Нечетное число. День недели - Суббота case '16': query_posts('p=248'); break; // Нечетное число. День недели - Воскресенье case '17': query_posts('p=248'); break; // Четное число. День недели - Понедельник case '01': query_posts('p=225'); break; // Четное число. День недели - Вторник case '02': query_posts('p=229'); break; // Четное число. День недели - Среда case '03': query_posts('p=233'); break; // Четное число. День недели - Четверг case '04': query_posts('p=237'); break; // Четное число. День недели - Пятница case '05': query_posts('p=241'); break; // Четное число. День недели - Суббота case '06': query_posts('p=248'); break; // Четное число. День недели - Воскресенье case '07': query_posts('p=248'); break; }
И как мне кажется, это не упростить…
В любом случае, Спасибо за подсказку с реализацией!
И как мне кажется, это не упростить…
$dd = array('11'=>223, '12'=>231, ... '07'=>248); query_posts(array('p' => $dd[date('j') % 2 . date('N')]));
^_^
А еще лучше добавить постам произвольное поле, в которое записать эти самые 01, 02, 03, 04, и по нему делать выборку. Код сокращается до одной строки, а заодно появляется возможность вносить изменения в привязку без редактирования кода.
Юрий, спасибо! Круто!
- Тема «Четный / нечетный + день недели» закрыта для новых ответов.