php中根据生日判断星座、生肖程序代码

星座判断很简单我们要统计出每个星期所有日期时间段了,然后获取日期进行查询即可了,下面我给大家举两个实例,有需要的同学可参考.

星座:我是根据这个时间表写的,该时间表未必准确.

'水瓶座'=>'(1/22-2/21)', '双鱼座'=>'(2/22-3/21)',
'白羊座'=>'(3/22-4/21)', '金牛座'=>'(4/22-5/21)',
'双子座'=>'(5/22-6/21)', '巨蟹座'=>'(6/22-7/21)',
'狮子座'=>'(7/22-8/21)', '处女座'=>'(8/22-9/21)',
'天秤座'=>'(9/22-10/21)', '天蝎座'=>'(10/22-11/21)',
'射手座'=>'(11/22-12/21)', '摩羯座'=>'(12/22-1/21)'

根据日期判断星座函数

实例代码如下:

  1. function yige_constellation($month, $day) {
  2. // 检查参数有效性
  3. if ($month < 1 || $month > 12 || $day < 1 || $day > 31) return false;
  4. // 星座名称以及开始日期
  5. $constellations = array(
  6. array( "20" => "宝瓶座"),
  7. array( "19" => "双鱼座"),
  8. array( "21" => "白羊座"),
  9. array( "20" => "金牛座"),
  10. array( "21" => "双子座"),
  11. array( "22" => "巨蟹座"),
  12. array( "23" => "狮子座"),
  13. array( "23" => "处女座"),
  14. array( "23" => "天秤座"),
  15. array( "24" => "天蝎座"),
  16. array( "22" => "射手座"),
  17. array( "22" => "摩羯座")
  18. );
  19. list($constellation_start, $constellation_name) = each($constellations[(int)$month-1]);
  20. if ($day < $constellation_start) list($constellation_start, $constellation_name) = each($constellations[($month -2 < 0) ? $month = 11: $month -= 2]);
  21. return $constellation_name;
  22. }

下面这个更全面可直接根据生日检查年龄,生肖,星座

实例代码如下:

  1. <?php
  2. /**
  3. * 根据生日中的月份和日期来计算所属星座
  4. *
  5. * @param int $birth_month
  6. * @param int $birth_date
  7. * @return string
  8. */
  9. function get_constellation($birth_month,$birth_date)
  10. {
  11. //判断的时候,为避免出现1和true的疑惑,或是判断语句始终为真的问题,这里统一处理成字符串形式
  12. $birth_month = strval($birth_month);
  13. $constellation_name = array(
  14. '水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座',
  15. '狮子座','处女座','天秤座','天蝎座)','射手座','摩羯座'
  16. );
  17. if ($birth_date <= 22)
  18. {
  19. if ('1' !== $birth_month)
  20. {
  21. $constellation = $constellation_name[$birth_month-2];
  22. }
  23. else
  24. {
  25. $constellation = $constellation_name[11];
  26. }
  27. }
  28. else
  29. {
  30. $constellation = $constellation_name[$birth_month-1];
  31. }
  32. return $constellation;
  33. }
  34. /**
  35. * 根据生日中的年份来计算所属生肖
  36. *
  37. * @param int $birth_year
  38. * @return string
  39. */
  40. function get_animal($birth_year)
  41. {
  42. //1900年是子鼠年
  43. $animal = array(
  44. '子鼠','丑牛','寅虎','卯兔','辰龙','巳蛇',
  45. '午马','未羊','申猴','酉鸡','戌狗','亥猪'
  46. );
  47. $my_animal = ($birth_year-1900)%12;
  48. return $animal[$my_animal];
  49. }
  50. /**
  51. * 根据生日来计算年龄
  52. *
  53. * 用Unix时间戳计算是最准确的,但不太好处理1970年之前出生的情况
  54. * 而且还要考虑闰年的问题,所以就暂时放弃这种方式的开发,保留思想
  55. *
  56. * @param int $birth_year
  57. * @param int $birth_month
  58. * @param int $birth_date
  59. * @return int
  60. */
  61. function get_age($birth_year,$birth_month,$birth_date)
  62. {
  63. $now_age = 1; //实际年龄,以出生时为1岁计
  64. $full_age = 0; //周岁,该变量放着,根据具体情况可以随时修改
  65. $now_year = date('Y',time());
  66. $now_date_num = date('z',time()); //该年份中的第几天
  67. $birth_date_num = date('z',mktime(0,0,0,$birth_month,$birth_date,$birth_year));
  68. $difference = $now_date_num - $birth_date_num;
  69. if ($difference > 0)
  70. {
  71. $full_age = $now_year - $birth_year;
  72. }
  73. else
  74. {
  75. $full_age = $now_year - $birth_year - 1;
  76. }
  77. $now_age = $full_age + 1;
  78. return $now_age;
  79. }
  80. ?>