PHP

星座を取得

PHPにて星座を取得する。

・まずは星座の番号を取得
・その後星座の番号を星座名に変換

という2ステップで行う。
( DBに星座を数値で保存しておきたいので )

・メイン

$datetime = new \DateTime("2018-03-07");
$zodiac_id = getZodiacId($datetime);
$res = getZodiacName($zodiac_id);
print_r($res);//魚座

・関数

//星座をIDとして取得
function getZodiacId($datetime){

    $m = (int)$datetime->format("n");
    $d = (int)$datetime->format("j");

    $zodiacs = [
        [3, 21,  4, 19],//0
        [4, 20,  5, 20],//1
        [5, 21,  6, 21],//2
        [6, 22,  7, 22],//3
        [7, 23,  8, 22],//4
        [8, 23,  9, 22],//5
        [9, 23, 10, 23],//6
        [10, 24, 11, 22],//7
        [11, 23, 12, 21],//8
        [12, 22,  1, 19],//9
        [1, 20,  2, 18],//10
        [2, 19,  3, 20]//11
    ];

    foreach($zodiacs as $key => $zodiac){
        list($start_m, $start_d, $end_m, $end_d) = $zodiac;
        if(
            ($m === $start_m && $d >= $start_d) ||
            ($m === $end_m && $d <= $end_d)
        ){
            return $key;
        }
    }

    return false;
}

//星座のIDを星座名に変換
function getZodiacName($key){

    $zodiacs = [
        '牡羊座',//0
        '牡牛座',//1
        '双子座',//2
        'かに座',//3
        '獅子座',//4
        '乙女座',//5
        '天秤座',//6
        '蠍座',//7
        '射手座',//8
        '山羊座',//9
        '水瓶座',//10
        '魚座',//11
    ];

    return $zodiacs[$key];

}


以上