3.1 条件控制语句
在生活中,我们总是要做出许多决策,程序也一样。下面给出几个常见的例子:
• 如果购买商品成功,用户余额减少,用户积分增多。
• 如果输入的用户名和密码正确,提示登录成功,则可以进入网站,否则,提示登录失败。
• 如果用户使用微信登录,则使用微信扫一扫;如果使用QQ登录,则输入QQ号和密码;如果使用微博登录,则输入微博号和密码;如果使用手机号登录,则输入手机号和密码。
以上示例就是程序中的条件控制语句。按照条件选择执行不同的代码片段。条件控制语句主要有if、if...else、if...elseif...else和switch,下面分别进行讲解。
3.1.1 if语句
PHP的if语句的格式为:
如果表达式的值为真,就顺序执行语句;否则,就会跳过该语句再往下执行。如果需要执行的语句不止一条,那么可以使用{},在{}中的语句被称为语句组,其格式为:
if语句的流程就像一辆运行的火车,从A站出发,可以直接到达C站,也可以经过B站,然后再到达C站,如图3.1所示。
图3.1 if语句流程控制示意图
判断随机数是不是偶数
本实例使用rand()函数生成一个随机数$num,然后判断这个随机数是不是偶数,如果是偶数,则输出结果。代码如下:
运行结果如图3.2所示。
图3.2 判断随机数是不是偶数
学习笔记
rand()函数的作用是取得一个随机的整数。每次刷新页面后,会生成一个新的随机数,可能与图3.2所示的运行结果不同。
3.1.2 if...else语句
在大部分情况下,总是需要在满足某个条件时执行一条语句,而在不满足该条件时执行其他语句,这时可以使用if...else语句。if...else语句的语法格式为:
该语句的含义为:如果表达式的值为真,则执行语句1;如果表达式的值为假,则执行语句2。就像一辆运行的火车,有两条轨道可以选择,如图3.3所示。
图3.3 if...else语句流程控制示意图
首先使用rand()函数生成一个随机数$num,然后判断这个随机数是偶数还是奇数,再根据不同结果显示不同的字符串。代码如下:
3.1.3 elseif语句
if...else语句只能选择两种结果:要么执行语句1,要么执行语句2。但有时会出现两种以上的选择,例如:一个班的考试成绩,如果是90分以上的,则为“优秀”;如果是60分~90分之间的,则为“良好”;如果是低于60分的,则为“不及格”。这时可以使用elseif语句,elseif语句的语法格式为:
elseif语句的流程就像一辆运行的火车,从A站出发到达B站,有多条线路可以选择,根据铁路局的不同指示,选择相应的路线,如图3.4所示。
图3.4 elseif语句的流程控制示意图
判断今天是这个月的上旬、中旬或下旬
本实例将通过elseif语句,判断今天是这个月的上旬、中旬或下旬。代码如下:
运行结果如图3.5所示。
图3.5 判断今天是本月上旬、中旬或下旬
3.1.4 switch语句
虽然elseif语句可以进行多种选择,但如果条件较多时,就会变得十分烦琐。为了避免if语句过于冗长,并且要提高程序的可读性,可以使用switch分支控制语句。switch语句的语法格式如下:
switch语句根据变量或表达式的值,依次与case中的常量表达式的值相比较,如果不相等,则继续查找下一个case;如果相等,则执行对应的语句,直到switch语句结束或遇到break为止。一般来说,switch语句最终都有一个默认值default,如果在前面的case中没有找到相符的条件,则输出默认语句,这和else语句类似。
选择第三方登录接口
明日学院网站支持第三方登录,第三方登录包括qq登录、微信登录、微博登录等。根据不同的登录方式,需要调用相应的第三方接口,这时,可以根据网址中传递值的不同,使用switch语句判断用户选择了哪一个第三方应用,然后调用该应用的接口。代码如下:
运行结果如图3.6所示。
图3.6 switch多重判断语句
学习笔记
switch语句在执行时,即使遇到符合要求的case语句段,也会继续往下执行,直到switch语句结束。为了避免浪费时间和资源,一定要在每个case语句段后加上break语句。这里break语句的意思是跳出当前循环,在3.3.1节中将详细介绍break语句。