zoukankan      html  css  js  c++  java
  • (独孤九剑)--流程控制

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

  • 相关阅读:
    go golang 代码记录
    ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVED SIGNAL 15
    hbase启动之后master和regionserver相继自动断掉
    Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPool::allocate
    虚拟机中二次安装cdh重新启动hadoop集群报错
    cdh在虚拟机中二次安装时无法选择之前管理的主机
    sqoop生成与关系数据库表结构对应的hive表结构,但在hive却找不到table
    Sqoop将hive数据导出到MySQL中文乱码了怎么办?
    idea通过maven打jar包不成功或无法加载主类或打成功也找不到jar包
    一个牛公司的关于oracle数据的面试题
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/8571857.html
Copyright © 2011-2022 走看看