在php中切换语句

时间:2016-11-21 06:14:17

标签: php algorithm

我发现此片段根据年份计算中国十二生肖。

<?php
 $year = 2016;
 switch (($year-4 ) % 12) {
    case 0 : $zodiac = 'Rat' ;  break ;
    case 1 : $zodiac = 'Ox' ;  break ;
    case 2 : $zodiac = 'Tiger' ;  break ;
    case 3 : $zodiac = 'Rabbit' ;  break ;
    case 4 : $zodiac = 'Dragon' ;  break ;
    case 5 : $zodiac = 'Snake' ;  break ;
    case 6 : $zodiac = 'Horse' ;  break ;
    case 7 : $zodiac = 'Goat' ;  break ;
    case 8 : $zodiac = 'Monkey' ;  break ;
    case 9 : $zodiac = 'Rooster' ;  break ;
    case 10 : $zodiac = 'DOG' ;  break ;
    case 11 : $zodiac = 'Pig' ;  break ;     
 }
echo "{$year} is the year of the {$zodiac}.";
 ?>

我想知道为什么他们在切换剩余部分之前首先扣除4

1 个答案:

答案 0 :(得分:1)

原因是Chinese Zodiac的12年周期不与Gregorian Calender(我们使用的那个)同步。

中国十二生肖的12年周期通常以“鼠”开头(如您的代码所示)。然而,格里高利日历年的“0 AD”并非“鼠”。老鼠到了转折时期最接近的一年实际上是在公元4年。

因此,为了使日历与黄道带正确对齐,并使其更易于阅读,程序员决定从第一年中简单地减去4,而不是更改所有数字(使兔子= 0,龙= 1等)