无论是单向分支的if语句还是双向的if else语句,都是php程序员在编程中使用较多的两种结构。但是,在涉及多路分支结构时,很多初级php程序员对else if语句的使用很茫然,甚至乱用。那么,else if的分支结构用法如何,笔者分享一下自己的体会。
请参考下面的else if语句使用实例,代码是包含在一个名为elseif.php的文件中:
<?php
date_default_timezone_set("Etc/GMT-8");
$hour = date("H");
if ($hour < 6){
echo "当前是北京时间凌晨".date("H:i:s",time());
}else if ($hour < 9){
echo "当前是北京时间早上".date("H:i:s",time());
}else if ($hour < 12){
echo "当前是北京时间上午".date("H:i:s",time());
}else if ($hour < 14){
echo "当前是北京时间中午".date("H:i:s",time());
}else if ($hour < 17){
echo "当前是北京时间下午".date("H:i:s",time());
}else if ($hour < 19){
echo "当前是北京时间傍晚".date("H:i:s",time());
}else if ($hour < 22){
echo "当前是北京时间晚上".date("H:i:s",time());
}else{
echo "夜间休息时间!";
}
* date_default_timezone_set("Etc/GMT-8"); 设置服务器端时间为东八区时
* echo "当前是北京时间".date("Y-m-d H:i:s",time()); 获取服务器端当前时间
本例中通过date("H")函数获取服务器端时间段的取值范围是0~24,因此,在第一个判断if条件的表达式实际上是指$hour的范围是0~6.那么,if条件表达式的反面情况(条件)
就是6~24,也就是说else if语句其实是对if条件的反面情况进行判断的,只不过第一个else if语句的表达式$hour<9,是在6<=$hour<24这个大范围下再进行一次细分。以此类推
,第二个else if语句是在条件9<=$hour<24的情况下划分成9<=$hour<12与12<=$hour<24两部分范围。接着,再通过else if语句将12<=$hour<24的范围划分为12<=$hour<14与14<=$hour<24……如此细分,直到将条件划分为19<=$hour<22与22<=$hour<24为止,通过else语句来表达22<=$hour<24这个条件,即最后一个条件。从这个例子可以看出,使用else if语句有一条规则,那就是把范围小的条件放在前面 *优先处理。把一个大范围的条件每每细分为两种情况,通过else if语句再对条件进行细化,直到把范围划分完成为止。