零起点php入门第7课-php语言结构(2)

Author: 陌小雨Date: 2015-09-05View: 61

这节课我们学习php的选择语句,选择语句用于使程序在不同的条件下执行不同的语句。PHP中的选择语句有if语句和switch语句。

1、if语句

if语句也称为条件语句。它有多种使用形式,包括if形式、if…else形式和if…elseif…else形式,下面分别介绍这些形式的使用。

if形式是if语句最基本的形式,它的语法结构如下所示:

if (表达式)
语句1;

如果表达式的值为TRUE,则执行语句1,为FALSE则执行语句1之后的语句,这里的语句1可以是一个语句,也可以是一个复合语句。如果是复合语句,必须带有花括号。该结构的流程如下图所示。

if

 

我们通过下面代码来™演示if选择语句的if形式用法。

<?php
	$x=6;		//初始化两个变量
	$y=7;
	if($y>$x)		//比较运算结果为TRUE
		$x=$y;		//该语句将$y的值赋值给$x
	echo "两个变量中比较大的值是$x 。";			//输出两个变量中比较大的值
?>

代码运行结果:两个变量中比较大的值是7。

以上代码的作用就是输出两个变量中比较大的值,如果变量y的值小于变量x,则赋值语句不会被执行。通过if语句来保证$x值永远为最大的。

2、if…else形式

if…else形式的语法结构如下所示:

if (表达式)
语句1;
else
语句2;

如果表达式的值为TRUE,则执行语句1,为FALSE则执行语句2,该结构的流程如图所示。

ifelse

<?php
	$x=16;			//初始化两个变量
	$y=17;
	if($x>$y)			//进行比较运算并根据比较结果执行对应的语句
		echo "两个变量中比较大的值是$x";
	else
		echo "两个变量中比较大的值是$y";
?>

代码运行结果:两个变量中比较大的值是17

由于变量y的值要大于变量x的值,因此else下的语句被执行。

3、if…elseif…else

if…elseif…else的语法结构如下所示:

if (表达式1)
语句1;
elseif(表达式2)
语句2;
else
语句3;

注意:以上语法结构中的elseif项可以有若干个,这里只列出了最基本的形式。该语法结构中的else从句是可选的。

这种结构从上到下逐个对条件进行判断,一旦条件满足或者遇到else从句就执行与相关的语句,并跳过结构中其他代码。该结构的流程图如图所示。
ifelseif

<?php
	$score=90;			//定义一个分数变量并初始化
	if($score>=90&&$score<=100)			//对分数进行判断并输出对应评价
		echo '这是一个优秀的成绩。';
	elseif($score>=80&&$score<90)		//对分数进行判断并输出对应评价
		echo '这是一个良好的成绩。';
	elseif($score>=60&&$score<80)		//对分数进行判断并输出对应评价
		echo '这个成绩需要努力。';
	elseif($score<60&&$score>=0)		//对分数进行判断并输出对应评价
		echo '这个成绩非常糟糕!';
	else								//不满足以上任何一个条件则输出合法性提示
		echo '请确定成绩的合法性。';
?>

输出结果:

这是一个优秀的成绩。

当$score=59时,由于分数在0~59之间,因此第10行代码会被执行。当$score为一个大于100或者小于0的数值时,default后的语句会被执行。

4、if语句嵌套

选择语句可以嵌套,也就是在一个选择结构中存在另一个选择结构,这是经常碰到的情况,但也是容易出错的地方,原因常出现在if和else的匹配问题。PHP中的else总是会与最近的if匹配。我们首先来看一个使用正确嵌套的示例。

<?php
	$operator='/';			//定义一个变量并初始化
	$x=15;					//定义两个操作数并初始化
	$y=10;
	if($operator=='+')			//判断运算符并执行相应运算
		echo "$x+$y=".($x+$y);
	elseif($operator=='-')
		echo "$x-$y=",$x-$y;
	elseif($operator=='*')
		echo "$x*$y=".$x*$y;
	elseif($operator=='/'){
		if($y==0)				//循环嵌套,判断除法中的除数是否为0
			echo '除数为0,计算错误!';
		else
			echo "$x/$y=".$x/$y;
	}
	else
		echo '请输入一个正确的运算符!';	
?>

代码运行结果:

除数为0,计算错误!

以上代码的其他情况我们可以通过更改相应变量来查看,这里陌小雨就不做演示了。

5、switch语句

switch语句用来实现按照不同的情况执行不同的语句。switch语句常用于对变量的不同取值执行不同的语句。if…else…if形式也可以用来实现类似的功能,但是它则常用于针对变量的一个范围执行不同的语句,它的一般形式如下所示:

switch (表达式)
{
case 常量1:
语句1或空;
break;
case 常量2:
语句2或空;
break;

case 常量n:
语句n或空;
break;
default:
语句n+1或空;
}

switch语句执行时,首先计算表达式的值,并将它与每一个case后的常量进行比较。如果与某个常量相等,则执行对应的语句,遇到break语句则退出switch结构,否则就一直向下执行直到遇到break或者default。结构中的default不是必须有的,它用来匹配case情况之外的所有情况。switch语句的程序流程如图所示。

switch

<?php
	$week=0;			//定义并初始化星期变量
	switch($week){
		case 0:			//变量为0的情况
			echo '星期日。';
			break;
		case 1:			//变量为1的情况
			echo '星期一。';
		case 2:			//变量为2的情况
			echo '星期二。';
			break;
		case 3:			//变量为3的情况
		case 4:			//变量为4的情况
			echo '星期三或者星期四。';
			break;
		case 5;			//变量为5的情况
			echo '星期五。';
			break;
		default:		//变量为以上case之外的所有情况
			echo '星期六。';
	}
?>

以上代码中变量值为0,因此运行结果会输出变量为0的情况。

代码输出结果:星期日。

我们将代码中的week变量值设置为1后运行。

代码输出结果:星期一。星期二。

以上运行结果输出了两个星期,是因为代码中的case下的语句中没有break语句,因此程序无条件执行变量为2的情况下语句并遇到break后停止。

我们再将代码中week变量设置为3或者4后运行。

代码运行结果:星期三或者星期四。

变量为3或者4的运行情况是相同的,因为变量为3的情况下没有任何语句,因此他会无条件执行后面情况下的语句直到遇到break。

我们再将变量改为除0~5之外的任意类型值运行,这些值都会匹配default值。

代码运行结果:星期六。

下一节课,我们来学习php中的循环语句。