分享一个根据具体的日期判断星座的PHP函数

其实原理很简单,也就是把所有的星座月份日期范围存储到一个数组中,然后根据日期判断属于哪个范围,这样就得到是哪个星座了。

下面的这个函数写的比较精炼,可以参考一下

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

来源:http://www.lai18.com/content/312383.html

时间: 2024-10-10 01:30:16

分享一个根据具体的日期判断星座的PHP函数的相关文章

分享一个将字符串中间段替换为*号的函数

header('Content-type:text/html;charset=utf-8'); function cutstr($str) { #计算$str的字符个数 preg_match_all("/./u", $str, $len); $strlen = (int) count($len[0]); #计算中间位置开始转* $start = ceil($strlen / 2); $start = ceil($start / 2); #计算结束的字符长度 $forlen = $str

分享一个MySQL分库分表备份脚本(原)

分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上时间方便整理 2.取数据库:抓取数据库名称,我用的awk和grep配合取数据库的名称(如果想按照表备份可以再细化一下)注意要用mysql -e选项 这样才能做成脚本 3.系统环境变量:因为用到了函数,所以非系统内置的命令 最好在脚本里面用 . /etc/profile  把系统当前的环境变量传过来

分享一个最近在使用的响应式css框架 Pure

响应式,就是根据浏览器或不同设备屏幕大小自适应内容. 第一次查响应式呢,了解到是要在head里写判断浏览器宽度之类的东西,也要设置对IE低版本兼容. 如: <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /><link rel="style

分享一个几年前写的代码生成器

该界面设计部分来自网络.版权归原作者所有. 该工具没有做完成.我只是学习用的.主要是为了熟悉Devexress控件的使用. 1系统主界面 2系统代码生成 3生成的详细代码查看 4该工具写的不是很智能. 如下生成WCF服务契约代码: 1 public class CreateWcfService 2 { 3 4 public static string GreateWcFserviceContract(List<Model> list) 5 { 6 var strsb = new StringB

分享一个线程安全的单例模板类

单例模式应该说是最简单的设计模式了.在此分享一个线程安全的单例模板类. template <typename Type> class CSingleton { public: static Type* GetInstance() { // kBeingCreatedMarker用来表示单例实例正在创建过程中. // 此处初始化为1是因为操作系统不会分配地址为1的指针. static const volatile intptr_t kBeingCreatedMarker = 1; // 如果m_

分享一个快速的Json(反)序列化开源项目 Jil

我们不缺少JSON的序列化库,但我们缺少一个性能非常好的库,这对于网站来说非常重要.今天我发现了Jil. 他是开源的代码: https://github.com/kevin-montrose/Jil 在他主页上有详细的介绍其性能的表现,我这里就不转述了,他最重要的特点就是性能,Emit那当然不会少了,当想让他超越其他的库光一个Emit肯定不行,他还有很多其他的优化. 公共缓冲区 为介绍GC的压力,他使用了诸如builder.CommonCharBuffer这样的功能缓冲,builder.Comm

根据身份证号中的日期判断某人是否已满18岁及是否已满60岁

在网上看到一个这样的算法,初时感觉很巧妙, if (DateTime.Now.Subtract(time).Days / 365 >60) 后来觉得似乎有问题: 比如说:假定今天是2014年7月28日,某人1954年7月28日出生,根据这样算法得到的结果是:21915/365=60.04109589041096,大于60.如果1954年7月29日出生,在你我看来,此人不满60岁,而得到的结果是21914/365=60.03835616438356,仍然大于60,显然不正确 好吧,按照人类的思路:

一个diff工具,用于判断两个目录下所有的改动(比较新旧版本文件夹)

需求: 编写一个diff工具,用于判断两个目录下所有的改动 详细介绍: 有A和B两个目录,目录所在位置及层级均不确定 需要以B为基准找出两个目录中所有有改动的文件(文件或内容增加.修改.删除),将有改动的文件放入第三个目录中,层级结构与原目录相同 将所有新增与更新信息记录到更新日志文件中 将删除信息单独记录到删除日志文件中 每次执行diff工具需要生成一个新的以日期命名的目录存放文件 使用场景: 本工具用于软件版本升级时找出两个版本间所有修改过的文件,便于增量替换. 提示:    使用CRC判断

分享一个简单易用的软件定时器模块——基于keil+stm32f103zet+hal库(裸机实现)

公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer 今天看了看,简单的,就移植了- 且看文档的说明, ================================= 分享一个简单易用的软件定时器模块——MultiTimer.源码地址: https://github.com/0x1abin/MultiTimer 简介 MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更