陈力:传智播客古代 珍宝币 泡泡龙游戏开发第24讲:PHP程序的控制结构
任何PHP脚本都是由一系列语句构成的。赋值语句、函数、循环、条件语句或者甚至是空语句。语句通常以分号结束。还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章介绍了各种语句类型。
1、顺序控制
所谓顺序控制流程,就是不加控制的流程,PHP程序设计的默认情况,会按照语句顺序来执行编写的代码
$a=7;
echo “a=”.a;
echo “hello!”;
$a++;
echo “a=”.a;
echo “O(∩_∩)O”;
$a++;
echo “a=”+a;
2、分支控制
一个简单的定义: 有选择的来执行我们的代码。
分为 1. 单分支 2. 双分支 3 多分支
(1)单分支
单分支的基本语法结构
if(条件表达式){
语句;
//...
//....
}
这里的条件表达式不管多复杂,最总运算的结果就是 true 或者 false;
例子:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行为负责!”
$age=7;
if($age>18){
echo '你的年龄大于18';
}
(2)双分支
基本语法结构:
if(条件表达式){
//n多语句;
}else{
//n多语句;
}
例子:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 “你年龄大于18!”。否则,输出“你的年龄不大!”
PHP程序设计代码:
$age=4;
if($age>18){
echo '你的年龄大于18';
}else{
echo '你的年龄小于18';
}
echo '<br/>程序结束!';
(3)多重分支
基本语法结构是
if(条件表达式){
//n多语句
}else if (条件表达式){
//n 多语句
}else if(条件表示式){
//.
}//这里可能还有更多的else if
else{
}
对上面的结构请注意:
(1) else if 可以有一个,也可以有多个
(2) else 可以没有。
案例:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 “你年龄大于18”。如果该同志的年龄大于10岁并且小于等于18,则输出 “你的年龄也不小了.”。其它情况,则输出“小孩子注意”。
PHP程序设计代码如下:
$age=34;【1】
if($age>18【2】){
echo '你年龄大于18';【3】
}else if($age>10 【4】 && $age<=18【5】){
echo '你的年龄也不小了';【6】
}else{
echo '小孩子注意';【7】
}
echo "over";【8】
流程分析图:
(4)switch分支语句
switch基本语法结构
switch(表达式){
case 常量1:
//n多语句;
break;
case 常量2:
//n多语句
break;
defual:
//n多语句;
break;
}
注意:
case 语句有一到多个。defaul 语句可以没有(根据自己代码的业务逻辑)。通常在case 语句后,要带break,,表示退出switch语句。常量的类型 (int, float, 字符串,布尔型)。
案例:请编写一个程序,该程序可以接收一个字符,比如: a,b,c,d,e,f,g。a表示星期一,b表示星期二 … 根据用户的输入显示相依的信息.要求使用switch 语句完成。
$myChar="b";
switch($myChar){
case "a";
echo '今天星期一,猴子穿新衣';
break;
case "b":
echo '今天星期二,猴子当小二';
break;
case "c":
echo '今天星期三,猴子爬雪山';
break;
default:
echo '没有匹配的日期';
}
echo 'okokook';
一个案例:
$i=11;
switch ($i){
case 10:
echo '10';
case 1.3:
echo '11';
break;
default:
echo 'hello';
//break;
case 11:
echo '12';
break;
}
该案例得出一个结论:
//最终的结论是: 首先按照case顺序进行配置,如果一个都没有匹配到,则执行 //default语句的内容,知道遇到break,则退出switch。
说一下if语句和switch的区别:从我们学习if和switch分支看,if对某个范围的判断,而switch是对一个点的判断, 所以我们可以这样去选择。应用场景: 当我们的分支就是几个点的时候(比如判断坦克的方向),就应当使用swtich,如果你的分支是几个区域(范围)的判断,则考虑使用if。
5、循环控制流程
(1)for循环
for循环控制基本语法结构:
for(循环初值; 循环的条件; 步长)
{//语句块;}
为什么需要循环控制?请输出1000000句“网站建设”。这问题应该怎样写这段代码,循环的执行程序设计代码:
for($i=0;$i<2;$i++){echo '<br/>贵阳网站建设'; }echo "执行完成";
(2)while循环
while循环基本语法结构是:
while(循环条件){
//循环体语句块
}
案例:如何通过while来打印10句“网站建设”。
程序设计代码如下:
//*****while循环*****
$i=0;//$i循环控制变量
while($i<10){
echo '<br/>网站建设'.$i;
//这里我们对循环控制变量,$i自增。
$i++;
}
(3)do..while循环控制
基本语法结构
do{
//循环体
}while(循环条件);
比如要实现循环的显示10句”网站建设”;
程序设计代码如下:
$i=0;//循环控制变量
do{
echo '<br/>dowhile网站建设'.$i;
//对循环控制变量修改
$i++;//这里有程序员自己控制步长.
}while($i<10);
do..while循环执行次数,最低就是一次。
案例:请使用循环控制语句,输出一个空心的菱形,菱形的层数可以灵活的变化。
//打印出金字塔的一半
//外层的for循环控制层数
for($i=1;$i<=3;$i++){
//内层控制每层*的个数
for($j=1;$j<=$i;$j++){
echo '*';
}
echo '<br/>';
}
//打印出整个金字塔
//如果打印3层
// * * -> 1 2个空格 1个* (1-1)*2+1=1
// ** *** -> 2 1个空格 3个* (2-1)*2+1=3
// *** ***** -> 3 0个空格 5个* (3-1)*2+1=5
$n=20;
for($i=1;$i<=$n;$i++){
//在打印*前,先打印空格
for($k=1;$k<=$n-$i;$k++){
echo " ";
}
//内层控制每层*的个数
for($j=1;$j<=($i-1)*2+1;$j++){
echo '*';
}
echo '<br/>';
}
输出结果如下:
【推荐阅读】陈力:传智播客古代 珍宝币 泡泡龙游戏开发第24讲:PHP程序的控制结构