【web 开发基础】PHP 的流程控制之多向条件分支结构 -PHP 快速入门 (14)

时间:2022-04-17 01:29:12

多向条件分支结构(elseif)

【web 开发基础】PHP 的流程控制之多向条件分支结构 -PHP 快速入门 (14)

条件分支结构其实是我们生活中常用的一种一种逻辑结构,类似于我们常用的(如果...那么...否则...就.....).本文中的elseif子句,和此名称暗示的一样,就是if和else的组合,相当于(...else{if(表达式){{语句块;}}})。和else一样,它延伸了if语句,条件分支结构中elseif 子句会根据不同的表达式值确定执行哪个语句块。在PHP中也可以将elseif分开成两个关键字“else if"来使用。elseif 语句的语法格式如下:

<?php
if(表达式1 )//如果“表达式1”为TRUE,则执行“语句块1”语句
	语句块1;
elseif (表达式2 )//如果“表达式2”为TRUE,则执行“语句块2”语句
	语句块2;

//elseif语句的个数没有规定,可以无限增加
elseif (表达式n )
//如果第n个“表达式n”为TRUE,则执行“语句块n"语句
	语句块n;
else
//如果表达式的条件都不为TRUE,则执行“语句块n+1”语句
	语句块n+1;

在上面的elseif的语法当中,如果判断第一 个 “表达式1”为TRUE,则执行“语句块1”的语句;如果判断第二个‘表达式2” 为TRUE,则执行“语句块2”的语句:以此类推,判断第n个“表达式n”为TRUE,则执行“语句块n”的语句;如果表达式的条件都不为TRUE,则执行else子语中的‘语句块n+1” 的语句,当然最后的else语句也可以省略。在elseif语句中同时只能有一个表达式为TRUE,即在elseif语句中只能有一个语句块被执行,即多个elseif从句是排斥关系。

编程实践

在应用开发中,这种多向条件分支结构适合对同一个变量的值在不同范围内进行判断。比如下面分时问候的代码,通过获取服务器中当前的时间,在不同的时间段输出不同的问候。在实际的运用中,我们可以用于网站中,在用户登录后的问候功能,或者可做成报时系统:

<?php 
    date_default_timezone_set("Asia/Shanghai");       //设置时区
    echo "当前时间".date("Y-m-d H:i:s",time())." <br>"; //通过date()函数获取当前时间,并输出
    
    $hour = date("H");              //获取服务器时间中当前时间的小时
	
    if( $hour < 6 ) {                     
        echo "凌晨好! 起床了吗还是没睡呢?努力奋斗也要注意作息哦!";
    } elseif ( $hour < 10 ) {          
        echo "早上好! 一日之计在于晨";
    } elseif ( $hour < 12 ) {         
        echo "上午好!努力搬砖的时间又到了,加油!";
    } elseif ( $hour < 14 ) {         
        echo "中午好!不要忘记吃午饭哦!";
    } elseif ( $hour < 18 ) {          
        echo "下午好!工作累了,放松一下吧!";
    } elseif ( $hour < 19 ) {          
        echo "傍晚好!犒劳自己一下,晚餐吃顿好的!";
    } elseif ( $hour < 22 ) {          
        echo "晚上好!工作了一天,刷会剧放松一下";
    } else {                              
        echo "夜里好!不早了,该睡了哦!";
    }

执行结果:

【web 开发基础】PHP 的流程控制之多向条件分支结构 -PHP 快速入门 (14)

:写多条件分支语句时,一定要注意条件的排列的顺序,避免陷入条件穿透的陷阱

使用elseif语句有一条基本规则, 即总是优先把包含范围小的条件放在前面处理。比如:$hour<6和$hour<10两个条件,明显$hour<6 的范围更小,所以应该先处理$hour<6 的情况。和前面的if语句一样,使用elseif语句控制是否执行一条语句,可以使用花括号括起来,也可以不用。但要想使用elseif语句能够控制是否执行多条语句,则必须使用花括号括起来形成代码块。通常建议不要省略if、else、 elseif 后执行块的花括号,即使条件执行体只有一行代码。 因为保留花括号会有更好的可读性,而且会减少发生错误的可能。