3.4 常用语句
本节将介绍PHP语言的常用语句,包括赋值语句、分支语句、循环语句、注释语句和其他常用语句。使用这些语句就可以编写简单的PHP程序了。
3.4.1 赋值语句
赋值语句是PHP语言中最简单、最常用的语句。通过赋值语句可以定义变量并为其赋初始值。在3.3.1小节介绍赋值运算符时,已经涉及了赋值语句,例如:
$a = 2;
$b = $a + 5;
变量赋值分为值传递和地址传递两种情况,具体内容参照3.2.3小节理解。
3.4.2 条件分支语句
条件分支语句指当指定表达式取不同的值时,程序运行的流程也发生相应的分支变化。PHP提供的条件分支语句包括if语句和switch语句。
1.if语句
if语句是最常用的一种条件分支语句,其基本语法结构如下:
if(条件表达式)
语句块
只有当“条件表达式”等于 True 时,执行“语句块”。if语句的流程图如图3-8所示。
图3-8 if语句的流程图
【例3-21】 if语句的例子。
if($a > 10)
echo "变量\$a大于10";
如果语句块中包含多条语句,可以使用{}将语句块包含起来。例如:
if($a > 10) {
echo "变量\$a大于10";
$a = 10;
}
if语句可以嵌套使用,也就是说在<语句块>中还可以使用if语句。
【例3-22】 嵌套if语句的例子。
if($a > 10) {
echo "变量\$a大于10";
if($a > 100)
echo "变量\$a大于100";
}
在使用if语句时,语句块的代码应该比上面的if语句缩进2个(或4个)空格,从而使程序的结构更加清晰。
2.else语句
可以将else语句与if语句结合使用,指定不满足条件时所执行的语句。其基本语法结构如下:
if(条件表达式)
语句块1
else
语句块2
当条件表达式等于True时,执行语句块1,否则执行语句块2。if…else…语句的流程图如图3-9所示。
图3-9 if…else…语句的流程图
【例3-23】 if...else...语句的例子。
if($a > 10)
echo "变量\$a大于10";
else
echo "变量\$a小于或等于10";
3.elseif语句
elseif语句是else语句和if语句的组合,当不满足if语句中指定的条件时,可以再使用elseif语句指定另外一个条件。其基本语法结构如下:
if 条件表达式1
语句块1
elseif 条件表达式2
语句块2
elseif 条件表达式3
语句块3
……
else
语句块n
在一个if语句中,可以包含多个elseif语句。if…elseif…else…语句的流程图如图3-10所示。
【例3-24】 下面是一个显示当前系统日期的 PHP 代码,其中使用到了 if 语句、elseif 语句和else语句。
图3-10 if…elseif…else…语句的流程图
<?PHP
$today = getdate();
echo("今天是");
if($today['wday']==1) {
echo("星期一");
}
elseif($today['wday']==2) {
echo("星期二");
}
elseif($today['wday']==3) {
echo("星期三");
}
elseif($today['wday']==4) {
echo("星期四");
}
elseif($today['wday']==5) {
echo("星期五");
}
elseif($today['wday']==6) {
echo("星期六");
}
else {
echo("星期日");
}
?>
getdate()是PHP的日期时间函数,它返回一个数组。可以通过一组键值访问返回的数组,获取当前系统日期中的数据,如表3-5所示。关于数组的概念和应用请参见第4章。
表3-5 日期数组中的键值
在例3-24中使用$today['wday']返回变量$today对应的星期数字,根据此值使用if语句显示当前日期对应的星期文字。此实例保存为附赠光盘的“第2章\weekday.php”。
4.switch语句
很多时候需要根据一个表达式的不同取值对程序进行不同的处理,此时可以使用switch语句,其语法结构如下:
switch(表达式) {
case 值1:
语句块1
break;
case 值2:
语句块2
break;
……
case 值n:
语句块n
break;
default:
语句块n+1
}
case子句可以多次重复使用,当表达式等于值1时,则执行语句块1;当表达式等于值2时,则执行语句块2;依此类推。如果以上条件都不满足,则执行default子句中指定的<语句块n>。每个case子句的最后都包含一个break语句,执行此语句会退出switch语句,不再执行后面的语句。switch语句的流程图如图3-11所示。
图3-11 switch语句的流程图
【例3-25】 将例3-24的程序使用switch语句来实现,代码如下:
<?PHP
$today = getdate();
echo("今天是");
switch($today['wday']) {
case 1:
echo("星期一");
break;
case 2:
echo("星期二");
break;
case 3:
echo("星期三");
break;
case 4:
echo("星期四");
break;
case 5:
echo("星期五");
break;
case 6:
echo("星期六");
break;
default:
echo("星期日");
}
?>
3.4.3 循环语句
循环语句即在满足指定条件的情况下循环执行一段代码,并在指定的条件下执行循环。
PHP中的循环语句包括while语句、do…while语句、for语句和foreach语句。
1.while语句
while语句的基本语法结构如下:
while(条件表达式) {
循环语句体
}
当条件表达式等于True时,程序循环执行循环语句体中的代码。while语句的流程图如图3-12所示。
图3-12 while语句的流程图
通常情况下,循环语句体中会有代码来改变条件表达式的值,从而使其等于 False而结束循环语句。如果退出循环的条件一直无法满足,则会产生死循环。这是程序员不希望看到的。
【例3-26】 下面通过一个实例来演示while语句的使用。
<?PHP
$i = 1;
$sum = 0;
while($i<11) {
$sum = $sum + $i;
$i++;
}
echo($sum);
?>
程序使用while循环计算从1累加到10的结果。每次执行循环体时,变量$i会增1,当变量$i等于11时,退出循环。运行结果为55。
2.do…while语句
do…while语句和while语句很相似,它们的主要区别在于 while 语句在执行循环体之前检查表达式的值,而do…while 语句则是在执行循环体之后检查表达式的值。do…while语句的流程图如图3-13所示。
图3-13 do…while语句的流程图
do…while语句的基本语法结构如下:
do {
循环语句体
} while(条件表达式);
【例3-27】 下面通过一个实例来演示do…while语句的使用。
<?PHP
$i = 1;
$sum = 0;
do {
$sum = $sum + $i;
$i++;
} while($i<11);
echo($sum);
?>
程序使用do…while语句循环计算从1累加到10的结果。每次执行循环体时,变量$i会增1,当变量$i等于11时,退出循环。运行结果为55。
3.for语句
PHP中的for语句与C++中的for语句相似,其基本语法结构如下:
for(表达式1;表达式2;表达式3) {
循环体
}
程序在开始循环时计算表达式1的值,通常对循环计数器变量进行初始化设置;每次循环开始之前,计算表达式2的值,如果为True,则继续执行循环,否则退出循环;每次循环结束之后,对表达式3进行求值,通常改变循环计数器变量的值,使表达式2在某次循环结束后等于False,从而退出循环。for语句的流程图如图3-14所示。
图3-14 for语句的流程图
【例3-28】 下面通过一个实例来演示for语句的使用。
<?PHP
$sum = 0;
for($i=1; $i<11; $i++) {
$sum = $sum + $i;
}
echo($sum);
?>
程序使用for语句循环计算从1累加到10的结果。循环计数器$i的初始值被设置为1,每次循环变量$i的值增加1;当$i<11时执行循环体。运行结果为55。
使用foreach语句可以遍历数组中的元素,本书将在第4章介绍它的使用情况。
4.continue语句
在循环体中使用continue语句可以跳过本次循环后面的代码,重新开始下一次循环。
【例3-29】 如果只计算1~100的偶数之和,可以使用下面的代码:
<?PHP
$i = 1;
$sum = 0;
while($i<101) {
if($i % 2 == 1) {
$i++;
continue;
}
$sum = $sum + $i;
$i++;
}
echo($sum);
?>
如果$i%2等于1,表示变量$i是奇数。此时,只对$i加1,然后执行continue语句开始下一次循环,并不将其累加到变量$sum中。
5.break语句
在循环体中使用break语句可以跳出循环体。
【例3-30】 将例3-26修改为使用break语句跳出循环体。
<?PHP
$i = 1;
$sum = 0;
while(true) {
if($i>=11)
break;
$sum = $sum + $i;
$i++;
}
echo($sum);
?>
共有条评论 网友评论