(独孤九剑)--流程控制

重点: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

原文地址:https://www.cnblogs.com/fightjianxian/p/8571857.html