《PHP开发从入门到精通-电子教案-袁鑫 第7章》由会员分享,可在线阅读,更多相关《PHP开发从入门到精通-电子教案-袁鑫 第7章(19页珍藏版)》请在金锄头文库上搜索。
1、第7章 PHP的控制语句,任何PHP脚本都是由一系列语句构成的。一条语句可以是一个赋值语句、一个函数调用、一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。,【例7-1】ifelse判断,if判断分为if判断、ifelse判断以及ifelseelse多重判断等三种形式。本例中对这三种结构进行了举例说明。 if判断 语句结构为: if (expr) statement 如果expr的值为TRUE,PHP将执行statement;如果值为FALSE,将忽略statement。 如: if($name=
2、“sunny“) echo “你的名字是对的!“.“;,【例7-1】ifelse判断,ifelse判断 语句结构为: if (expr) statement1 else statement2 如果expr的值为TRUE,PHP将执行statement1;如果值为FALSE,PHP将执行statement2。,【例7-1】ifelse判断,ifelseelse多重判断 语句结构为: if (expr1) statement1 elseif(expr2) statement2 elseif(exprn) statementn else statement 判断第一个表达式expr1,如果为TRUE
3、则执行statement1语句,然后跳出,执行后续语句;如果为FALSE,再接着判断expr2,如果为TRUE则执行statement2语句,然后跳出,执行后续语句;如果为FALSE,再接着判断expr3一直到exprn,若条件仍然为FALSE,则执行else后的statement语句。,【例7-1】ifelse判断,if语句可以无限层地嵌套在其他if语句中,这给程序的不同部分的条件执行提供了充分的弹性。 注意: (1)若statement不是一条语句,而是若干条语句组,记住,一定要用括起来。 (2)else后不能跟条件表达式,若要指定新的条件表达式,则使用elseif语句。 (3)在PHP中
4、,elseif与else if是一样的,两者显示的效果一样。,【例7-2】switchcase判断,switch语句的语法结构如下: switch(expr) case 表达式1: statement; case 表达式2: statement; default: statement; 执行过程为:首先计算表达式expr,然后将这个值与第一个case后的表达式1进行比较,若相等,则执行该case后的相应语句;否则与第二个case后的表达式2进行比较,若一直没有找到匹配项,则执行default下的statement语句块,直到遇到语句块的结尾或者遇到break语句为止。,【例7-2】switch
5、case判断,break语句的意思是结束当前循环的执行,并把控制返回给紧跟在该循环后面的下一个语句。 注意: (1)并不是每一个case语句都需要包含一个值,可以让某个case语句为空,这表示可以忽略向case结构中添加新的语句。当变量与某个值匹配,但又不希望程序执行任何操作,就可以采取这种方法。 (2)在case语句中指定的表达式只能是整数、字符串、浮点数据类型,不能使用数组或对象值作为case表达式。,【例7-3】while循环,while循环是PHP中最简单的循环类型,和C语言中的while循环一样。while语句的基本格式是: while (expr) statement1; stat
6、ement2; 或: while (expr) statement; while语句的含义很简单,它告诉PHP只要while表达式的值为TRUE就重复执行嵌套中的循环语句。表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。有时如果while表达式的值一开始就是FALSE,则循环语句一次都不会执行。,【例7-3】while循环,注意: (1)实例中的“ ”。 (2)使用while循环时,必须在while执行体中使判断条件有所改变。如果没有的话就成为死循环,永无止境地执行下去。你会感觉到电脑越来越慢,简直不堪重负,这是因为死循环在耗尽系统资源。
7、所以一定要给while循环设置一个退出循环的出口。 (3)while的判断表达式支持所有合法的表达式,包括带有运算符的表达式。,【例7-4】dowhile循环,dowhile语句的语法结构: do statement; while(expr); 而比较while循环: while (expr) statement1; statement2; 此时发现,while循环一开始就进行条件表达式的判断,若不满足,则一次也不执行循环体的结构;但dowhile循环则不同,先执行一次循环体语句,再来判断条件表达式的值,如果为真则继续执行循环体,否则跳出循环。,【例7-5】for循环,for循环的语法结构如下
8、: for(expr1;expr2;expr3) statement; 其中三个表达式expr1、expr2、expr3分别有以下特点: expr1:在循环开始时执行一次,初始化循环控制变量。 expr2:循环控制表达式,每一次循环开始之前都要对这个表达式进行判断,若为真,则继续执行循环;否则,退出循环。 expr3:对循环控制变量进行递增或者递减,控制循环变量的计数;这个表达式在每次循环结束之后进行。 每个表达式都可以为空,expr2为空则无限循环下去。,【例7-6】foreach循环,foreach循环和Perl以及其他语言很像,这只是一种遍历数组的方法。foreach循环仅能用于数组,当
9、试图将其用于其他数据类型或者一个未初始化的变量时会产生错误。它有两种语法,第二种比较次要,但却是第一种的有用的扩展。 foreach (array_expr as $value) statement foreach (array_expr as $key = $value) statement 第一种格式遍历给定的array_expr数组。每次循环中,当前单元的值被赋给$value并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。,【例7-6】foreach循环,第二种格式做同样的事情,不同的是当前单元的键名也会在每次循环中被赋给变量$key。 也可以将本例改成第二种格式,修
10、改如下: foreach ($student as $key = $value) /循环输出数组元素 echo “$student$key = $value.n“; ,【例7-6】foreach循环,注意: (1)foreach目前只能遍历数组和对象。 (2)foreach不支持用“”来抑制错误信息的能力。 (3)当foreach开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在foreach循环之前调用reset()。 (4)除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此数组指针不会被each() 结构改变,对返回的数组单元的修改也不会影
11、响原数组。不过原数组的内部指针的确在处理数组的过程中向前移动了。假定foreach循环运行到结束,原数组的内部指针将指向数组的结尾。 (5)自PHP 5起,可以很容易地通过在 $value 之前加上&来修改数组的单元。此方法将以引用赋值而不是拷贝一个值。,【例7-7】break语句,在使用while循环、dowhile循环、for循环或者在【例7-2】中出现的switchcase判断时,有时并不需要执行到满足循环控制变量的条件为止。若想在循环体中满足某一特定条件时退出循环,就会采用break语句。break语句的作用就是退出循环语句或者switchcase判断。 在for循环中使用的语法如下:
12、 for(expr1;expr2;expr3) if(expr4) break; ,【例7-8】continue语句,continue语句在循环结构中用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环,可用于while循环、dowhile循环、for循环或者switchcase判断中,功能为跳出本次循环,转而进入下一次循环的判断。,【例7-9】嵌套控制结构,将一种控制语句嵌套在另一种控制语句中,比如,for循环中可以嵌套for循环或者其他的while循环等,像本例中,for循环就嵌套了for循环。这种结构称为嵌套控制结构。 如: for($i=0;$i“; /换行 上面的代码执行过程为:外层的for循环首先进行计算,并执行直到$i不再小于等于9为止。外层循环执行1次,内层循环执行10次。因此,整个循环执行了10*10次。,小结,本章主要介绍了控制语句的相关知识,包含PHP中的判断与循环语句,包括ifelse判断、switchcase判断、while循环、dowhile循环、for循环、foreach循环、break语句、continue语句、嵌套控制语句等内容。详细介绍了每一个条件判断语句与循环语句的使用。通过本章的学习可以使读者掌握PHP的程序控制流程,为今后开发大型PHP程序奠定扎实的基础。,