Array
(
[1] => 赤
[2] => 桃
[3] => 茶
[4] => 黄緑
[5] => 緑
[6] => 青
[7] => 水
[8] => 紫
[9] => 灰
[10] => #abcdef
)
左記の配列($color_array)から色名を一つずつ取り出し通年で表示する方法を考えた。
まず、365日を配列の数で割って表示期間の日数を算出。
$dividay = 365/(count($color_array)); // 36.5
これに、1日の秒数である86400を掛けて表示時間を得る。
$representime = ceil(86400 * $dividay); // 3153600
それから、「今」が年始から数えて何秒かを求める。
$strtotime_diff = time() - strtotime(date('Y').'0101'); // 25935293
この経過秒数を表示時間で割り、現在の表示時間が配列中の何番目に当たるかを求める。
$order = ceil($strtotime_diff / $representime); // 9
または
date('z')+1 が『年間の通算日』なので、表示期間の日数で割れば同値となる。
$order = ceil((date('z')+1) / $dividay); // 9
これで $color_array に $order を入れれば、「今」の表示期間の色名が取得できる。
echo $color_array[$order]; // 灰
そんな訳で「今」のテンプレートの色名は「灰」。
ちなみに、配列のキーを [1] から始める場合は、array_unshift($color_array, 'null'); としてダミーを追加してから unset($color_array[0]); で [0] を削除する。