PHP教程第八讲.docx
- 文档编号:3500102
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:12
- 大小:19.38KB
PHP教程第八讲.docx
《PHP教程第八讲.docx》由会员分享,可在线阅读,更多相关《PHP教程第八讲.docx(12页珍藏版)》请在冰点文库上搜索。
PHP教程第八讲
一、简介
任何PHP脚本都是由一系列语句构成的。
一条语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句或者甚至是一个什么也不做的语句(空语句)。
语句通常以分号结束。
此外,还可以用花括号将一组语句封装成一个语句组。
语句组本身可以当作是一行语句。
本章介绍了各种语句类型。
二、if语句
if结构是很多语言包括PHP在内最重要的特性之一,它允许按照条件执行代码片段。
PHP的if结构和C语言相似:
php
if($a>$b)
echo"aisbiggerthanb";
?
>
如果\$a大于$b,则以上例子将显示aisbiggerthanb
三、else语句
经常需要在满足某个条件时执行一条语句,而在不满足该条件时执行其它语句,这正是else的功能。
else延伸了if语句,可以在if语句中的表达式的值为FALSE时执行语句。
例如以下代码在\$a大于$b时显示aisbiggerthanb,反之则显示aisNOTbiggerthanb:
php
if($a>$b){
echo"aisgreaterthanb";
}else{
echo"aisNOTgreaterthanb";
}
?
>
四、elseif/elseif语句
elseif,和此名称暗示的一样,是if和else的组合。
和else一样,它延伸了if语句,可以在原来的if表达式值为FALSE时执行不同语句。
但是和else不一样的是,它仅在elseif的条件表达式值为TRUE时执行语句。
例如以下代码将根据条件分别显示aisbiggerthanb,aequaltob或者aissmallerthanb:
php
if($a>$b){
echo"aisbiggerthanb";
}elseif($a==$b){
echo"aisequaltob";
}else{
echo"aissmallerthanb";
}
?
>
在同一个if语句中可以有多个elseif部分,其中第一个表达式值为TRUE(如果有的话)的elseif部分将会执行。
在PHP中,也可以写成“elseif”(两个单词),它和“elseif”(一个单词)的行为完全一样。
句法分析的含义有少许区别(如果你熟悉C语言的话,与之行为相同),但是底线是两者会产生完全一样的行为。
elseif的语句仅在之前的if和所有之前elseif的表达式值为FALSE,并且当前的elseif表达式值为TRUE时执行。
Note:
必须要注意的是elseif与elseif只有在类似上例中使用花括号的情况下才认为是完全相同。
如果用冒号来定义if/elseif条件,那就不能用两个单词的elseif,否则PHP会产生解析错误。
php
/*不正确的使用方法:
*/
if($a>$b):
echo$a."isgreaterthan".$b;
elseif($a==$b):
//将无法编译
echo"Theabovelinecausesaparseerror.";
endif;
/*正确的使用方法:
*/
if($a>$b):
echo$a."isgreaterthan".$b;
elseif($a==$b):
//注意使用了一个单词的elseif
echo$a."equals".$b;
else:
echo$a."isneithergreaterthanorequalto".$b;
endif;
?
>
五、流程控制的替代语法
PHP提供了一些流程控制的替代语法,包括if,while,for,foreach和switch。
替代语法的基本形式是把左花括号({)换成冒号(:
),把右花括号(})分别换成endif;,endwhile;,endfor;,endforeach;以及endswitch;
phpif($a==5):
?
>
Aisequalto5
phpendif;?
>
在上面的例子中,HTML内容“Aisequalto5”用替代语法嵌套在if语句中。
该HTML的内容仅在$a等于5时显示。
替代语法同样可以用在else和elseif中。
下面是一个包括elseif和else的if结构用替代语法格式写的例子:
php
if($a==5):
echo"aequals5";
echo"...";
elseif($a==6):
echo"aequals6";
echo"!
!
!
";
else:
echo"aisneither5nor6";
endif;
?
>
Note:
不支持在同一个控制块内混合使用两种语法。
六、while语句
while循环是PHP中最简单的循环类型。
它和C语言中的while表现地一样。
while语句的基本格式是(该代码为语法格式,不是代码案例,无需敲打该代码):
while(expr)
{statement}
while语句的含意很简单,它告诉PHP只要while表达式的值为TRUE就重复执行嵌套中的循环语句。
表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。
有时候如果while表达式的值一开始就是FALSE,则循环语句一次都不会执行。
和if语句一样,可以在while循环中用花括号括起一个语句组,或者用替代语法:
while(expr):
statement
...
endwhile;
下面两个例子完全一样,都显示数字1到10:
php
/*example1*/
$i=1;
while($i<=10){
echo$i++;/*theprintedvaluewouldbe
$ibeforetheincrement
(post-increment)*/
}
/*example2*/
$i=1;
while($i<=10):
print$i;
$i++;
endwhile;
?
>
七、do-while语句
do-while循环和while循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。
和一般的while循环主要的区别是do-while的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在一般的while循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为FALSE则整个循环立即终止)。
do-while循环只有一种语法:
php
$i=0;
do{
echo$i;
}while($i>0);
?
>
以上循环将正好运行一次,因为经过第一次循环后,当检查表达式的真值时,其值为FALSE($i不大于0)而导致循环终止。
资深的C语言用户可能熟悉另一种不同的do-while循环用法,把语句放在do-while(0)之中,在循环内部用break语句来结束执行循环。
以下代码片段示范了此方法:
php
do{
if($i<5){
echo"iisnotbigenough";
break;
}
$i*=$factor;
if($i<$minimum_limit){
break;
}
echo"iisok";
/*processi*/
}while(0);
?
>
如果还不能立刻理解也不用担心。
即使不用此“特性”也照样可以写出强大的代码来。
自PHP5.3.0起,还可以使用goto来跳出循环。
八、for语句
for循环是PHP中最复杂的循环结构。
它的行为和C语言的相似。
for循环的语法是(该代码为语法格式,不是代码案例,无需敲打该代码):
for(expr1;expr2;expr3)
{statement}
第一个表达式(expr1)在循环开始前无条件求值(并执行)一次。
expr2在每次循环开始前求值。
如果值为TRUE,则继续循环,执行嵌套的循环语句。
如果值为FALSE,则终止循环。
expr3在每次循环之后被求值(并执行)。
每个表达式都可以为空或包括逗号分隔的多个表达式。
表达式expr2中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。
expr2为空意味着将无限循环下去(和C一样,PHP暗中认为其值为TRUE)。
这可能不像想象中那样没有用,因为经常会希望用有条件的break语句来结束循环而不是用for的表达式真值判断。
考虑以下的例子,它们都显示数字1到10:
php
/*example1*/
for($i=1;$i<=10;$i++){
echo$i;
}
/*example2*/
for($i=1;;$i++){
if($i>10){
break;
}
echo$i;
}
/*example3*/
$i=1;
for(;;){
if($i>10){
break;
}
echo$i;
$i++;
}
/*example4*/
for($i=1,$j=0;$i<=10;$j+=$i,print$i,$i++);
?
>
当然,第一个例子看上去最简洁(或者有人认为是第四个),但用户可能会发现在for循环中用空的表达式在很多场合下会很方便。
PHP也支持用冒号的for循环的替代语法(该代码为语法格式,不是代码案例,无需敲打该代码)。
for(expr1;expr2;expr3):
statement;
...
endfor;
有时经常需要像下面这样例子一样对数组进行遍历:
php
/*
*此数组将在遍历的过程中改变其中某些单元的值
*/
$people=Array(
Array('name'=>'Kalle','salt'=>856412),
Array('name'=>'Pierre','salt'=>215863)
);
for($i=0;$i { $people[$i]['salt']=rand(000000,999999); } ? > 以上代码可能执行很慢,因为每次循环时都要计算一遍数组的长度。 由于数组的长度始终不变,可以用一个中间变量来储存数组长度以优化而不是不停调用count(): php $people=Array( Array('name'=>'Kalle','salt'=>856412), Array('name'=>'Pierre','salt'=>215863) ); for($i=0,$size=sizeof($people);$i<$size;++$i) { $people[$i]['salt']=rand(000000,999999); } ? > 九、foreach语句 foreach语法结构提供了遍历数组的简单方式。 foreach仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。 有两种语法(该代码为语法格式,不是代码案例,无需敲打该代码): foreach(array_expressionas$value) statement foreach(array_expressionas$key=>$value) statement ∙第一种格式遍历给定的array_expression数组。 每次循环中,当前单元的值被赋给\$value并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 ∙第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量\$key。 还能够自定义遍历对象。 可以很容易地通过在$value之前加上&来修改数组的元素。 此方法将以引用赋值而不是拷贝一个值。 php $arr=array(1,2,3,4); foreach($arras&$value){ $value=$value*2; } //$arrisnowarray(2,4,6,8) unset($value);//最后取消掉引用 ? > $value的引用仅在被遍历的数组可以被引用时才可用(例如是个变量)。 以下代码则无法运行: php foreach(array(1,2,3,4)as&$value){ $value=$value*2; } ? > Warning数组最后一个元素的$value引用在foreach循环之后仍会保留。 建议使用unset()来将其销毁。 十、break语句 break结束当前for,foreach,while,do-while或者switch结构的执行。 break可以接受一个可选的数字参数来决定跳出几重循环。 php $arr=array('one','two','three','four','stop','five'); while(list(,$val)=each($arr)){ if($val=='stop'){ break;/*Youcouldalsowrite'break1;'here.*/ } echo"$val } /*使用可选参数*/ $i=0; while(++$i){ switch($i){ case5: echo"At5 break1;/*只退出switch.*/ case10: echo"At10;quitting break2;/*退出switch和while循环*/ default: break; } } ? > 十一、小结 本节讲了if判断语句,它有if、if...else、if...elseif...else三种结构,循环语句有for、while、do-while、foreach这三种形式,在循环中可以使用break跳出循环,此外它们还有替代写法。 十二、练习 请使用for、while和do-while这三种结构各输出九九乘法表。
\n";
\n";
\n";
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 教程 第八