Как вернуть значение цвета на основе даты и случайности?

Дизайнер придумал довольно странную идею или цветное колесо (с 36 цветами).

Мне нужно написать функцию, возвращающую one цвет, но на основе date .

Как веб-сайт должен работать
На основе текущей даты (вы видите германские даты на изображении внизу) сайт должен иметь этот фоновый цвет.

Таким образом, «1 января» первый цвет (синий цвет или то, что вы могли бы назвать этим) должен быть фоном на главной странице. Через 10 дней следующий цвет. Поэтому в течение одного года все 36 цветов должны быть закорочены в порядке колес.

Я думаю, до тех пор, как промежуточный программист мог мне помочь, я не знаю, как это сделать.

Но он немного усложняется
Дизайнер хочет, чтобы каждая страница веб-сайта отличалась другим цветом. Итак, представьте, что сайт имеет 10 страниц («Главная», «О, Независимо, Галерея»), каждая страница должна иметь один из «ближайших» 10 цветов.

Ничего себе, даже я не отключаю его, когда объясняю это.

Поэтому я хочу создать функцию, возвращающую случайный цвет из пула из 10 цветов , которые основаны на текущей дате .

Итак, «1 января» я хочу, чтобы следующие цвета были помещены в массив и случайным образом возвращали один из этих цветов.

 function colorWheel($alpha) { // 36 colors $colors = array( rgba(170, 207, 172, 1), rgba(180, 211, 164, 1), rgba(189, 214, 145, 1), rgba(196, 217, 134, 1), rgba(206, 222, 124, 1), rgba(214, 226, 124, 1), rgba(226, 233, 124, 1), rgba(234, 235, 122, 1), rgba(236, 235, 120, 1), rgba(241, 231, 118, 1), rgba(240, 224, 118, 1), rgba(240, 216, 117, 1), rgba(237, 208, 115, 1), rgba(233, 199, 112, 1), rgba(230, 191, 110, 1), rgba(226, 177, 115, 1), rgba(221, 162, 110, 1), rgba(218, 153, 116, 1), rgba(215, 141, 112, 1), rgba(209, 140, 120, 1), rgba(203, 138, 119, 1), rgba(197, 136, 126, 1), rgba(191, 138, 134, 1), rgba(186, 142, 144, 1), rgba(181, 145, 157, 1), rgba(176, 151, 170, 1), rgba(170, 135, 178, 1), rgba(164, 159, 189, 1), rgba(166, 167, 194, 1), rgba(166, 177, 201, 1), rgba(166, 182, 204, 1), rgba(163, 186, 201, 1), rgba(164, 190, 196, 1), rgba(166, 196, 191, 1), rgba(167, 198, 185, 1), rgba(168, 201, 178, 1), ); } 

Есть идеи, как это сделать?

Это будет однодневная смена каждого високосного года, но это должно быть хорошо для ваших нужд.

 function colorWheel($alpha, $shift = 0) { // 36 colors $time = time(); $yearDay = $time % (60 * 60 * 24 * 365); $idx = $yearDay / 60 / 60 / 24 / 10; $colors = array( rgba(170, 207, 172, $alpha), … rgba(168, 201, 178, $alpha), ); return $colors[($idx + $shift) % count($colors)]; } 

Я не очень разбираюсь в WordPress, но чтобы получить один цвет на странице, вы должны сделать трюк:

 $page_shift = array( '/about.html' => 1, '/whatever.html' => 2, '/gallery.html' => 3, … ); $shift = $page_shift[$_SERVER['REQUEST_URI']]; $color = colorWheel(1, $shift); 

Ну, вот что я придумал:

 function colorWheel($time, $page) { // All possible RGB color values $colors = array( array(170, 207, 172, 1), // ... ); $index = ($time % (60 * 60 * 24 * 365) / 60 / 60 / 24 / 10); return 'background-color: rgba(' . ($colors[($index) % count($colors)-1][0]) . ', ' . ($colors[($index) % count($colors)-1][1]) . ', ' . ($colors[($index) % count($colors)-1][2]) . ', ' . ($colors[($index) % count($colors)-1][3]) . ');'; } // Usage: echo "<body style='" . colorWheel(time(), 'home') . "'>"; 

Хотя я не реализовал функцию разного цвета для каждой страницы, скажите, возможно ли использовать сеанс, текстовый файл или БД для хранения какой страницы имеет какой цвет?

Попробуй это:

 <?php // $colors contains what the designers you gave ... $colors = array ( array (0x0, 0x0, 0x0), // ... array (0xFF, 0xFF, 0xFF), ); $number_of_colors = count($colors); // 36 in your example $number_of_days_per_year = 365; // for brevity of the example $day = intval(date('z')); // some 'lower school math' magic :) $index = round($day * $number_of_colors / $number_of_days_per_year); // the color of the day is ..... $color = $colors[$index];