任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章讲述了各种语句类型。
在任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种基本结构:
- 顺序结构
- 分支结构(选择结构)
- 循环结构
顺序结构:在程序结构中,最基本的就是顺序结构。程序会按照自上而下的顺序执行。
分支结构
单一条件分支结构(if)
基本格式:
if(条件表达式){
语句组;
//语句组为单条语句时可省略“{ }”。
}
当条件表达式的值为真(true)时,PHP将执行语句组,相反条件表达式的值为假(false)时,PHP将不执行语句组,忽略语句组执行下面的语句。
$b)
echo "a 大于 b"; //如果变量a的值大于b的值则会输出:a大于b
$x=10;
$y=20;
if($x<$y){ //判断是否x小于y。多条语句需要使用{ }括起来。
$t=$x;
$x=$y;
$y=$t;
}
var_dump($x>$y); //输出:bool(true)
?>
双向条件分支结构(else从句)
格式如下
if(条件表达式){
语句组1
}else{
语句组2
}
if-else 条件判断与 if 条件判断类似,所不同的是,if-else 语句的条件表达式值为真(true)时,会执行 if 的本体语句(语句组1),而条件表达式值为假(false)时,则执行 else 的本体语句(语句组2)。
多向条件分支结构(elseif子句)
格式如下
if(条件表达式1){
语句块1
}elseif(条件表达式2){
语句块2
... ...
}elseif(条件表达式n){
语句块n
}else{
语句块n+1
}
多向条件分支结构(switch语句)
语句语法:
switch(表达式){
case 值1:
语句序列1; break;
case 值2:
语句序列2; break;
…
default:
语句序列 n; break;
}
当程序执行碰到switch条件判断时,它会取出键值,然后与语句体中的case所列出的值逐一比较,如果数值不符合,则将数值往下一个case传递,如果数值符合,则执行case中的语句,然后再碰到break语句即跳出switch条件判断,如果所有的值比对都不符合,则会执行default中的语句 。
switch语句使用注意事项:
switch语句与if语句不同,它仅能判断一种关系:是否恒等。
switch语句中case子句的常量可以是整型常量、字符型常量、表达式或变量。
在同一个switch中,case子句的常量不能相同,否则第二个值永远无法匹配到。
case 和 default 子句后面的语句序列允许由多个可执行语句组成,且不必用“{ }”括起来,也可以为空语句。
switch语句中可省略break语句和default子句。但省略后会改变流程。
巢状条件分支结构
语法:
if(表达式1){
if(表达式2){
.. .. ..
}else{
.. .. ..
}
}else{
if(表达式3){� …
}
}
巢状式条件分支结构就是if语句的嵌套,即指if或else后面的语句块中又包含if语句。if语句可以无限层地嵌套在其他if语句,这给程序的不同部分的条件执行提供了充分的弹性。
巢状式if..else流程控制使用范例:
";
if($a>=60){
if($a>=70){
if($a>=90){
echo "不错喔!!这次数学成绩甲等!!";
}else{
echo "还可以...这次数学成绩乙等!!";
}
}else{
echo "勉勉强强及格边缘...这次数学成绩丙等!!";
}
}else{
echo "有待下次努力...数学成绩不及格!!";
}
?>
循环结构
while语句
while循环语法:
while(表达式){
语句或语句序列
... ...
}
当while循环语句中表达式(循环控制语句)的结果为真时,程序将反复执行同一段程序:循环体( while中的语句或语句序列),直到满足一定的条件(表达式的结果为假时)后才停止执行该段程序。
实例:
尝试一下吧
使用while循环嵌套输出表格
使用while循环嵌套输出表格
”; //执行一次则输出一行并指定背景颜色
$in = 0; //内层循环需要计数的累加变量
while( $in < 10 ) { //指定内层循环,并且循环次数为10次
echo "".($out*10+$in)." "; //执行一次,输出一个单元格
$in++; //内层的计数变量累加
}
echo ""; //输出行关闭标记
$out++; //外层的计数变量累加
}
?>
do...while循环
基本格式:
do{
语句或语句序列
... ...
}while(表达式);
程序会先执行 do 语句体中的语句(循环体),然后再检查表达式(循环控制语句)的值,如果符合条件式(值为真),就再进行 do 语句体中的语句,直到条件不符合为止
注意:
do-while 后面必须加上分号作为结束
do-while与while的最大区别是先执行循环体然后再判断循环的控制条件
for循环
基本格式:
for(表达式1;表达式2;表达式3)
{
语句或语句序列;
}
for循环语句中表达式1为循环初始条件;表达式2为循环控制条件;表达式3为控制变量递增;语句或语句序列为循环体。
$i 次循环执行输出的结果
";
}
$i = 1; //将for语句中第一部分初始化提出来,放到for前面执行,但for语句中的分号要保留
for( ; $i <= 10; $i++ ) {
echo "这是第 $i 次循环执行输出的结果
";
}
$i = 1; //再将第三部分的增量提出来,放到for语句的执行体最后,但也要将分号保留
for( ; $i <= 10; ) {
echo "这是第 $i 次循环执行输出的结果
";
$i++;
}
$i = 1;
for( ; ; ) {
if( $i > 10 )
break;
echo "这是第 $i 次循环执行输出的结果
";
$i++;
}
特殊的流程控制语句
- break
我们之前在 switch 条件判断中已经使用过 break 关键字,它会使得程序流程离开 switch 本体中的语句,如果 break 使用在 for、while 或 do-while 循环结构中时,将会使得程序离开该层循环。 - continue
continue 的作用与 break 有点类似,continue 若使用在 for、while 或 do-while循环结构中,当程序执行至 continue 时,之后的语句将直接被略过,而直接执行下一次的循环动作。
- exit
当前的脚本中只要执行到exit语句,而不管它在哪个结构中都会直接退出当前脚本。exit是一个函数,当前使用过的die( )函数就是exit( )的别名。可以带参数输出一条消息,并退出当前脚本。
Have a try
- 四种9X9乘法表(for循环)
- 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。(while循环)