(独孤九剑)--流程控制
重点:if..else..,while,for,switch..case..,break,continue,exit
了解:goto,do...while,declare
【一】条件判断
下面举例介绍个别:
(1)if语句案例:制作一个简单的计算器
<form action="" method="get"> <input type="number" name="value1" value="<?php echo $_GET['value1'];?>"> <select name="fh"> <option value="jia">+</option> <option value="jian">-</option> <option value="chen">x</option> <option value="chu">/</option> <option value="yu">%</option> </select> <input type="number" name="value2" value="<?php echo $_GET['value2'];?>"><br> <input type="submit" name=""> </form> <?php $num1 = $_GET['value1']; $num2 = $_GET['value2']; $fh = $_GET['fh']; if (is_numeric($num1)&&is_numeric($num2)) { if ($fh == "jia") { $value = $num1+$num2; echo "加法计算结果为$value"; }elseif ($fh == "jian") { $value = $num1-$num2; echo "减法计算结果为$value"; } }else { echo "不能用"; } ?>
代码解析:
①is_numberic()判断变量是否为数字;
②提交表单后表单里的数据继续显示,需要在表单的value里设置数值,例如
<input type="number" name="value1" value="<?php echo $_GET['value1']; ?>">
(2)条件嵌套
if..else if..else if..else
(3)多种嵌套
if (condition) { if (condition) { # code... }else{ } }else{ if (condition) { # code... }else{ } }
(4)分支结构switch
语法:传入值后一次对比,符合则执行
$age = 23; switch ($age) { case '21': echo "我21岁了"; break; case '22': echo "我22岁了"; break; case '23': echo "我23岁了"; break; default: echo "我几岁了?"; break; }
【二】循环语句
(1)while循环
<?php $age = 23; while ($age < 26) { echo "我今年".$age."岁了<br>"; $age++; } echo "执行完毕,继续往下执行"; ?>
这里我们来拓展一下,修改上面的代码,来对比出函数的中断die()与break的区别:
<?php $age = 23; while ($age < 26) { echo "我今年".$age."岁了<br>"; $age++; die("退出当前脚本");//输出---我今年23岁了 退出当前脚本 break;//输出---我今年23岁了 执行完毕,继续往下执行 } echo "执行完毕,继续往下执行"; ?>
由此可以看出die()函数直接退出当前脚本,而break函数仅仅是跳出当前循环,脚本继续执行其他函数
(2)while循环与if判断结合,案例:做一个1-20的表格,每5个一行
<?php echo "<table width='600' border='1'>"; $value = 1; while ($value < 21) { if ($value%5 == 1) { echo "<tr>"; } echo "<td>$value</td>"; $value++; if ($value%5 == 1) { echo "</tr>"; } } echo "</table>"; ?>
拓展:在上面代码基础上做下调整,增加if判断情况,来做一个隔行变色的表格
<?php echo "<table width='600' border='1' cellspacing='0' cellpadding='10'>"; $value = 1; while ($value < 21) { if ($value%5 == 1) { echo "<tr>"; if($value%10 == 1){ echo "<tr bgcolor='pink'>"; } } echo "<td>$value</td>"; $value++; if ($value%5 == 1) { echo "</tr>"; } } echo "</table>"; ?>
(3)do..while循环
先执行一次代码块,保证至少执行一次。然后进入while判断循环
<?php $i = 1; do{ echo "我先执行一次"; $i++; }while ($i < 0) ; ?>
(4)do..while与while循环的区别:
do..while先执行一次再循环,while直接进入循环。且do..while是do后面跟代码块,而不是while后面
(5)for循环---计数型循环
for(表达式1;表达式2;表达式3){...}
注意:表达式之间用;隔开。
案例:下面用for循环做一个9x9乘法表
<?php for($i = 1;$i < 10;$i++){ for ($j=1; $j <= $i; $j++) { echo $j."X".$i."=".$j*$i."<span style='padding:6px'></span>"; } echo "<br>"; } ?>
(6)continue()与break()对比
<?php for($i = 1;$i < 6;$i++){ if($i == 2){ break;//输出1,2 continue;//输出1,3,4,5 } echo "$i"; } echo "执行完毕"; ?>
break与continue区别:break结束本次循环、continue为跳过本次,继续下次循环
【三】其他控制流程函数
(1)goto
从PHP5.3.0开始,可以使用goto语句来跳出循环,作用与break相似
语法:
<?php for($i = 1;$i < 6;$i++){ if($i == 4){ goto end; } echo "$i"; } end: echo "跳出循环,执行完毕"; ?>
注意:语法规定end后加:,名字可以自定义
作用:goto常用来跳到程序中其他任何位置,且目标位置只能位于同一文件或作用域,也就是说无法跳出一个类或方法,也无法跳入任何循环或switch结构。可以跳出昂前循环或者switch,通常用法是用goto代替多层的break
(2)exit
该函数是die()函数的别称,作用与die()相同。输出一条语句,退出当前脚本
<?php for($i = 1;$i < 6;$i++){ if($i == 4){ exit("拜拜"); } echo "$i"; } // end: echo "跳出循环,执行完毕"; ?>
输出结果为1,2,3。不会输出后面的跳出循环,执行完毕语句。因为die()中断了脚本
(3)declare声明
作用:在捕捉信号时使用,暂时不去深究
参考网址:http://blog.csdn.net/udefined/article/details/24333333和http://blog.csdn.net/Gavin_new/article/details/65629223
【总结】
1. die()函数直接退出当前脚本,而break函数仅仅是跳出当前循环,脚本继续执行其他函数
2. PHP制作表单时,echo "<table width='600' border='1'>";双引号里不能加双引号,否则会出现语法解析错误
3. 同样echo "<tr bgcolor="pink">";
出现语法解析错误:Parse error: syntax error, expecting ',' or ';'
翻译为:解析错误:语法错误,期待','或';'
所以双引号里不能加双引号
4. cellspacing表格与表格的间距;cellpadding表格内容与边框之间的间距
5. 为文档规定背景颜色bgcolor='pink';兼容写法:style='background-color:#E6E6FA'
6. break()与continue()区别:break()结束本次循环、continue为跳过本次,继续下次循环
7. goto语法规定,例如
goto end; ... end:
语法规定end后加:,名字可以自定义
8. goto常用来跳到程序中其他任何位置,且目标位置只能位于同一文件或作用域,也就是说无法跳出一个类或方法,也无法跳入任何循环或switch结构。可以跳出昂前循环或者switch,通常用法是用goto代替多层的break