1.顺序控制---不加控制的流程,默认按照顺序来执行你编写的代码
2.分支控制--有选择的来执行代码
- 单分支
- 语法:if(条件表达式){语句;}
- 快速入门
???$age=150; ???if($age>18){ ???????echo "你年龄大于18.要对自己的行为负责"; ???}
- 双分支
- 语法:if(条件表达式){语句;}else{语句;}
- 多分支(if else if else、switch)
- 语法:if(条件表达式){语句;}else{语句;}
- elif可以有多个,也可以没有
- else可以没有
- 语法:switch(表达式){case 变量1;n多语句;break;case 变量1;n多语句;break;defual:n多语句;break;}
- case语句部分有一到多
- defaul语句可以没有(根据自己代码业务逻辑)
- 通常在case语句后要带上break。表示退出switch语句
- 常量类型(int、float、string、boolean)
???$mychar=‘a‘; ???//常量可以为布尔类型(true)/字符串(“a”) ???//当用布尔类型匹配时,会自动转换数据类型 ???switch ($mychar) { ???????case ‘a‘: ???????????????echo "今天星期一"; //输出"今天星期一" ???????????break; ???//注意:如果没有break,就会顺序执行,直到遇到下一个break ???????case ‘b‘: ???????????echo "今天星期二"; ???????????break; ???????case ‘c‘: ???????????echo "今天星期三"; ???????????break; ???????default: ???????????echo "没有匹配的日期"; ???????????break; ???} ???//最终结论:首先按照case顺序进行匹配,如果一个都没匹配到则执行default,直到遇到break语句,退出switch ???echo "over"; ???//输出over
3.循环控制
- for循环
- 语法:for(循环初值;循环条件;步长){语句;}
<?php ???for ($i=1; $i <= 5; $i++) { ????????for ($m=1; $m <=$i ; $m++) { ????????????echo "*"; ???????} ???????????????echo "<br/>"; ???????}?>/*结果:*************** */
- while循环
- 语法:while(循环条件){//循环体}
???$a=0; ???while ( $a< 10) { ???????echo "hello"."<br/>"; ???//输出10句hello ???????$a++; ???//对循环变量自增 ???}
- do...while循环控制
- 语法:do{循环体 }while(循环条件);
???$i=0; ???do{ ???????echo "hi"."<br/>"; ???//输出5次hi ???????$i++; ???}while ($i<5); ???//先执行在判断循环条件
ex1:打印整个金字塔
1 ??//打印整个金字塔 ?2 ?$n=3; 3 ????for ($i=1; $i <= $n; $i++) { ?4 ????????//在打印*之前 先打印空格 5 ????????for ($j=1; $j<=$n-$i;$j++){ 6 ????????????echo " "; 7 ????????????????} 8 ????????//内层控制每层*的个数 9 ????????for ($m=1; $m <=($i-1)*2+1 ; $m++) { 10 ????????????echo "*";11 ????????}12 13 ????????????????echo "<br/>";14 ????????}15 /*打印结果:16 ??*17 ?***18 *****19 */
ex2:打印空心金字塔
1 ????$n=8; 2 ????for ($i=1; $i <=$n ; $i++) { ????//判断层数 3 ????????for ($m=0; $m <=$n-$i; $m++) { //金字塔前面的空格 4 ????????????echo " "; 5 ????????} 6 ????????for ($j=1; $j <=($i*2)-1 ; $j++) //每层的个数 7 ????????{ ?8 ??????????????????????//判断第一层和最后一层全部打印 ??9 ?????????????if ($i==1||$i==$n)10 ????????????{11 ????????????????echo "*";12 ????????????}else13 ????????????{14 ??????????????????????//判断每层的第一个和最后一个打印*,其他输出空格15 ????????????if ($j==1||$j==($i*2)-1)16 ?????????????{17 ????????????????echo "*";18 ????????????}19 ????????????else20 ????????????{21 ????????????echo " ";22 ????????????}23 ????????????}24 ????????????// echo "*";25 ????????}26 ????????echo "<br/>";27 ????}28 ?>29 /*30 打印结果:31 ????????*32 ???????* *33 ??????* ??*34 ?????* ????*35 ????* ??????*36 ???* ????????*37 ??* ??????????*38 ?***************39 * ???
ex3:简易计算器
1 //ex2.php 2 <html> 3 </!DOCTYPE html> 4 <html> 5 <head> 6 ????<title>jisuanqi</title> 7 </head> 8 <body> 9 <form action="result.php" method="post">10 <table width="300px" border="0">11 <tr>12 <td>第一个数:</td><td><input type="text" name="num1"/></td>13 </tr>14 <tr>15 <td>第二个数:</td><td><input type="text" name="num2"/></td>16 </tr>17 <tr>18 <td>运算符</td>19 <td><select name="oper">20 <option value="+">+</option>21 <option value="-">-</option>22 <option value="*">*</option>23 <option value="/">/</option>24 </select></td>25 </tr>26 <tr >27 <td colspan="2"><input type="submit" value="计算结果" /></td>28 </tr>29 </table>30 </form>31 </body>32 </html>33 //result.php34 <?php35 //接受用户从ex2.php提交的数据36 //1.接受num137 ????$num1=$_REQUEST["num1"];38 //2.接受num239 ????$num2=$_REQUEST["num2"];40 //3.接受运算符41 ????$oper=$_REQUEST["oper"];42 ????$res=0;43 ????switch ($oper) {44 ????????case ‘+‘:45 ????????????$res=$num1+$num2;46 ????????????echo "计算结果为:".$res;47 ????????????break;48 ????????case ‘-‘:49 ????????????$res=$num1-$num2;50 ????????????echo "计算结果为:".$res;51 ????????????break; ???????52 ????????????case ‘+‘:53 ????????case ‘*‘:54 ????????????$res=$num1*$num2;55 ????????????echo "计算结果为:".$res;56 ????????????break;57 ????????case ‘/‘:58 ????????????$res=$num1/$num2;59 ????????????echo "计算结果为:".$res;60 ????????????break; ???????????????????61 ????????default:62 ????????????echo "你输入的运算符不对";63 ????????????break;64 ????}65 ?>
界面显示:
ex4:99乘法表
1 <?php 2 //判断层数 3 for ($i=1; $i <=9 ; $i++) { ?4 ????//每层所显示的内容 5 ????for ($m=1; $m <=9 ; $m++) { ?6 ????????if($i>=$m){ 7 ????????????echo "$i*$m=".$m*$i." "; 8 ????????} ????9 ????}10 ????echo "<br/>";11 }12 ?>13 /*14 1*1=1 15 2*1=2 2*2=4 16 3*1=3 3*2=6 3*3=9 17 4*1=4 4*2=8 4*3=12 4*4=16 18 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 19 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 20 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 21 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 22 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 23 */
ex5.选择不同的图片代表不同的剪刀锤子布,与随机生成的数字做剪刀锤子布游戏
ex4.php代码如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 ????<title></title> 5 ????<!-- js代码。改变下拉值来改变所显示的图片 --> 6 ????<script language="javascript" type="text/javascript"> 7 ????function mychange(obj) { 8 ????????var val=obj.value; 9 ????????var myimage=document.getElementById("myimg");10 ????????if (val==‘jd‘) {11 ????????????myimage.src="1.jpg";12 ????????}else if (val=="cz") {13 ????????????myimage.src="thumbnail (2).jpg";14 ????????}else if (val=="b") {15 ????????????myimage.src="thumbnail (3).jpg";16 ????????}17 ????}18 ????</script>19 </head>20 <body>21 <form name="form" action="tijiao.php" method="post">22 你出拳:23 ????<!-- 为下拉框写一个onchange时间 -->24 <select name="bs" onchange="mychange(this);">25 <option value="jd">剪刀</option>26 <option value="cz">锤子</option>27 <option value="b">布</option>28 </select>29 <img src="thumbnail (4).jpg" id="myimg"/>30 <br/>31 <input type="submit" name="开始比赛">32 </form>33 </body>34 </html>
result.php的代码如下:
1 <?php 2 //获取下拉框所选的值 3 ????$result=$_REQUEST["bs"]; 4 ????//产生随机数 5 ????$rd=rand(0,2); 6 ????switch ($result) { 7 ????????case ‘b‘: 8 ????????????if ($rd=="0") { 9 ????????????echo "你出的是".$result.",我出的是布"."<br/>";10 ????????????????echo "平手" ;11 ????????????}elseif($rd=="1")12 ????????????{13 ????????????echo "你出的是".$result.",我出的是锤子"."<br/>";14 ????????????echo "你赢了";15 ????????}else{16 ????????????echo "你出的是".$result.",我出的是剪刀"."<br/>";17 ????????????echo "你输了";18 ????????}19 ????????????break; ???20 ????????case ‘jd‘:21 ????????????if ($rd=="0") {22 ????????????echo "你出的是".$result.",我出的是布"."<br/>";23 ????????????????echo "你赢了" ;24 ????????????}elseif($rd=="1")25 ????????????{26 ????????????echo "你出的是".$result.",我出的是锤子"."<br/>";27 ????????????echo "你输了";28 ????????}else{29 ????????????echo "你出的是".$result.",我出的是剪刀"."<br/>";30 ????????????echo "平手";31 ????????}32 ????????????break; ???33 ????????default:34 ????????????if ($rd=="0") {35 ????????????echo "你出的是".$result.",我出的是布"."<br/>";36 ????????????????echo "你输了" ;37 ????????????}elseif($rd=="1")38 ????????????{39 ????????????echo "你出的是".$result.",我出的是锤子"."<br/>";40 ????????????echo "平手";41 ????????}else{42 ????????????echo "你出的是".$result.",我出的是剪刀"."<br/>";43 ????????????echo "你赢了";44 ????????}45 ????????????break;46 ????}47 ?>48 ????????<!-- 注意:html代码需写在php代码外面 -->49 ????????<a href="ex4.php">返回测试页面</a>
结果:
4.循环相关语句----break语句
基本概念:结束当前的for、while、do while、swith流程,可以给一个数字,表示退出到第几层
入门案例:
???for ($i=0; $i <13 ; $i++) { ????????echo "hello".$i."<br/>"; //输出结果:从hllo0一直到hello10 ???????if ($i==10) { ???????????break; ???????} ???}
5.continue
基本概念:continue用于结束本次循环剩余代码,从新开始新的一次循环(如果条件为真,就继续执行),continue后面也可以跟数字,表示从第几层循环开始
1 ????for ($i=0; $i <2 ; $i++) { ?2 ????????for ($j=0; $j <4; $j++) { ?????3 ????????if ($j==2) { 4 ????????????continue 2; 5 ????????} ?6 ????????echo ‘$i=‘.$i."<br/>"; 7 ????} 8 ????} 9 /*10 $i=011 $i=012 $i=113 $i=114 hello15 */
6.goto
基本概念:通过goto语句,我们可以跳转到指定的地方去执行
???//注意:在for里面定义两个变量,注意用逗号隔开 ???for ($i=0,$j=50;$i <100 ; $i++) { ????????while ($j--) { ???//一直在while里面的循环,直到跳出该循环 ???????????if ($j==17) goto end; ???????} ???} ???echo "$i=".$i; ???//该语句不会被执行 ???end: ???echo "j=17".$i."||".$j;
7.常量
基本概念:特殊的变量.
- 定义变量前面不需要定义$
- 常量一旦定义 ,则不能修改其值
- 常量在定义的时候,就需要给他赋初值
- 常量可以通过define或者const定义
- 常量的名称,一般说是全部大写,用下划线间隔
- 什么时候需要使用到这个常量呢?在程序中我们不希望某个值变化,则考虑使用常量(圆周率,税率)
???// 第一种方法 ???define("TAX_TATE", 0.08); ???//不允许改变 ???echo TAX_TATE; ???//输出0.08 ???//第二种方法 ???const TAX_TATE2=0.1; ???echo TAX_TATE2; ???//输出0.1
【八】php三大流程控制总结
原文地址:http://www.cnblogs.com/8013-cmf/p/7727145.html