[PHP] 西暦から干支を求める (Switch文)

PHPswitch, 十二支, 干支

西暦から干支を求める方法を考えてみました。

西暦20xxと入力すると「〇年です」と出てくるようなアレです。

干支とは

干支は、十干と十二支を組み合わせた60を周期とする数詞。暦を始めとして、時間、方位などに用いられる。


https://ja.wikipedia.org/wiki/%E5%B9%B2%E6%94%AF

とあるので、私の意図していた子丑寅辰巳… は厳密にいうと十二支のようです。

十干と組み合わせた干支の求め方については後日考えます。

読んで字の如く十二支は12種類です。

ということで、西暦を12で割った余りの数を十二支に当てはまることで求めることができそうです。

計算方法

以下が直近の十二支対応表です。

干支西暦12で割った余り
20084
20095
20106
20117
20128
20139
201410
201511
20160
20171
20182
20193

上記対応表では申が余り「0」となるので、これを利用して判定スクリプトを作成。

判定スクリプト

Switch分を使用してシンプルに「西暦÷12」の余りの数で判定します。

$q = 〇〇;

$r = $q%12;
switch($r) {
case 0:
$a = "申";
break;
case 1:
$a = "酉";
break;
case 2:
$a = "戌";
break;
case 3:
$a = "亥";
break;
case 4:
$a = "子";
break;
case 5:
$a = "丑";
break;
case 6:
$a = "寅";
break;
case 7:
$a = "卯";
break;
case 8:
$a = "辰";
break;
case 9:
$a = "巳";
break;
case 10:
$a = "午";
break;
case 11:
$a = "未";
break;
}

echo $q. "年は" .$a. "年です。";

これだけです。

switch文で余りの数字に対応した十二支を割り当てるだけで終了です。

デモページ

PHPswitch, 十二支, 干支