zoukankan      html  css  js  c++  java
  • 前端PHP入门-007-流程控制

    在之前我们已经使用过if判断语句

    基本语法,不能有半点马乎,完全是语法规范规定的,不这么写就错!

    简单看看

    1. <?php
    2. //定义是否打赏的变量
    3. $dashang = true;
    4. if($dashang){
    5. exit('如果不打赏,我不写这个教程了');
    6. }
    7. ?>

    说明:

    1. //if单行判断
    2. if(布尔值判断)
    3. 只写一句话;
    4. 后续代码
    5. //if多行判断 --推荐写法,不要省略大括号
    6. if(布尔值判断){
    7. 可以写多句话;
    8. }
    9. 后续代码

    if语句

    小设计:计算机

    1. <form>
    2. <input type="text" name="num1">
    3. <select name="fh">
    4. <option value="jia"> + </option>
    5. <option value="jian"> - </option>
    6. <option value="c"> x </option>
    7. <option value="chu"> / </option>
    8. <option value="qy"> % </option>
    9. </select>
    10. <input type="text" name="num2">
    11. <input type="submit" value="运算" />
    12. </form>
    1. <?php
    2. $num1 = $_GET['num1'];
    3. $num2 = $_GET['num2'];
    4. $fh = $_GET['fh'];
    5. if(!is_numeric($num1) || !is_numeric($num2)){
    6. echo '请输入数值类型';
    7. }
    8. if($fh == 'jia'){
    9. echo $num1 . '+' . $num2 . '=' . ($num1+$num2);
    10. }
    11. if($fh=='jian'){
    12. echo $num1 . '-' . $num2 . '=' . ($num1-$num2);
    13. }
    14. if($fh=='c'){
    15. echo $num1 . 'x' . $num2 . '=' . ($num1*$num2);
    16. }
    17. if($fh=='chu'){
    18. echo $num1 . '/' . $num2 . '=' . ($num1/$num2);
    19. }
    20. if($fh=='qy'){
    21. echo $num1 . '%' . $num2 . '=' . ($num1%$num2);
    22. }
    23. ?>

    我知道使用JS也可以完成,但是我们要只要练习的目的

    课堂练习作业:
    写一个平年、闰年计算器。写一个form表单,通过get将年份给传来过来,判断传进来的年份是否为数值类型。并且要求,如果是闰年就提示这是闰年,如果是平年就提示这一年是平年。

    平年闰年规则:年份能被4整除,但是不能被100整除。 或者能被400整除,即为闰年,其他情况全为平年


    ## 嵌套if…else…elseif结构

    基本上到这里都是举示例为成绩

    1. <?php
    2. if(判断语句1){
    3. 执行语句体1
    4. }elseif(判断语句2){
    5. 执行语句体2
    6. }else if(判断语句n){
    7. 执行语句体n
    8. }else{
    9. 最后的else语句可选
    10. }
    11. //后续代码
    12. ?>

    上述结构表示:

    • 如果判断语句1的值为真,则执行语句体 1。执行完成后进入后续代码段。
    • 否则转入后面的判断语句2(elsif),判断语句2若为真,则执行语句体 2。
    • 否则转入后面的判断语句n(elsif),判断语句2若为真,则执行语句体 n。
    • 如果均不匹配则执行else语句。这种循环嵌套可以不含else语句,即只含有if、elseif语句。

    注:elseif()也可以写成else if()[推荐写法]

    代码执行流程图

    作业:
    写一个网页grade.html,向panduan.php页面以post方式提交分数段.

    • 0—-60以下,不及格
    • 60—70及格了,要努力
    • 70—80 还不错
    • 80—90 上清华有希望
    • 90—100 你这辈子没希望了
    • 100 更没希望了
    • 100分以上 爱因斯坦转世啊,思密达!

    不是一个数值类型或者小于0 请输入正确的分数


    ## if语句多种嵌套
    在if语句中可以嵌套一个或多个if语句,以实现对多个参数的判断,这就是if语句的多种嵌套。其结构形式如下:

    1. <?php
    2. if(判断1){
    3. if(判断2){
    4. 代码段 1
    5. }else{
    6. 代码段2
    7. }
    8. }else{
    9. if(判断3){
    10. 代码段3
    11. }else{
    12. 代码段4
    13. }
    14. }
    15. ?>

    流程图

    注意:
    我们在代码段1,2,3,4中可以再加入判断。根据实际情况还可以再加入嵌套
    注意缩进,缩进的作用只是使代码富有层次感,美观易读,对目标代码的生成毫无影响。

    技巧:使用大括号,大括号,大括号,让代码清晰


    分支结构switch语句的使用

    语法

    1. <?php
    2. switch(变量){ //字符串,整型
    3. case 具体值:
    4. 执行代码;
    5. break;
    6. case 具体值2
    7. 执行代码2;
    8. break;
    9. case 具体值3
    10. 执行代码3;
    11. break;
    12. default:
    13. }
    14. ?>

    说明

    1. 1. 上面的break是可选的
    2. 2. 上面的default也是可选的
    3. 3. 不要在case 后面写成分号,后面是冒号:
    4. 4. 不要在case后面写判断区间,如($foo > 20 或者 $foo == 30
    5. 5. switch里面在变量最好是 整型,字符串,因为布尔判断更适合if...else..

    流程图

    代码实验室

    1. <?php
    2. //定义出行工具
    3. $tool=rand(1,6);
    4. switch($tool){
    5. case 1:
    6. echo '司机开车';
    7. break;
    8. case 2:
    9. echo '民航';
    10. break;
    11. case 3:
    12. echo '自己家的专机';
    13. break;
    14. case 4:
    15. echo '火车动车';
    16. break;
    17. case 5:
    18. echo '骑马';
    19. break;
    20. case 6:
    21. echo '游轮';
    22. break;
    23. }
    24. ?>
    25. ```
    26. ----------
    27. # 循环语句的使用
    28. ## 语法
    29. ```php
    30. <?php
    31. //定义需要往返的次数,老外喜欢从0开始计数,我们也从0开始计
    32. $count = 0;
    33. //while后面接布尔值判断,为真执行,为假停止
    34. //$count 小于3的时候执行,也就是$count为0至3的时候执行
    35. //如果$count不小于3了,循环停止执行后续的代码
    36. //循环开始处
    37. while($count < 3){
    38. echo '我是胖先生,休息的第' . $count .'天<br />';
    39. //每次执行让$count+1,这样的话,就不会产生$count永远小于3的情况了
    40. $count++;
    41. //循环结束
    42. }
    43. echo '后续代码';
    44. ?>

    逻辑图


    # while循环

    while是一个布尔型循环,while(布尔判断)的值为true就执行大括号括起来的代码。如果为假就停出去,执行后续代码。

    完成效果图如下:

    第一步: 完成100个单元格的输出

    第二步: 完成10行的操作

    第三步: 设置斑马线


    完整代码:

    1. <?php
    2. $i=0;
    3. echo '<table width="800" border="1">';
    4. while($i<100){
    5. //0 - 9 为一行
    6. //10 -19 为一行
    7. //因此,每一行都能够被10求默,如为为10的时候,应该显示行开始的标签
    8. if($i%10 == 0){
    9. if($i%2==0){
    10. echo '<tr>';
    11. }else{
    12. echo '<tr bgcolor="pink">';
    13. }
    14. }
    15. echo '<td>'.$i.'</td>';
    16. $i++;
    17. //同理,每一行结束是不是应该有一个</tr>结束标签呢?
    18. if($i%10==0){
    19. echo '</tr>';
    20. }
    21. }
    22. echo '</table>';
    23. ?>

    改进代码双层循环

    • 先输出表格标签
    • 通过第一层循环再输出行标签
    • 在第一层循环里面再插入一层循环输出标签
    1. <?php
    2. echo '<table width="800" border="1">';
    3. $i=0;
    4. while($i<10){
    5. echo '<tr>';
    6. $j=0;
    7. while($j<10){
    8. echo '<td>'.$j.'</td>';
    9. $j++;
    10. }
    11. echo '</tr>';
    12. $i++;
    13. }
    14. echo '</table>';
    15. ?>
    16. ```
    17. 练习题:
    18. 九九乘法表
    19. ----------
    20. # do...while循环的区别
    21. do...while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样。
    22. ## 语法
    23. ```php
    24. do {
    25. //代码块
    26. } while (判断);

    代码

    do…while与while的区别是,它们的值的检查时机不同

    do-while 不论while判断是否成立,先执行一次代码代码块循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)。
    然而我们之前的while循环会检查布尔判断区域,成立则执行。不成立则不执行。

    1. <?php
    2. $i = 0;
    3. do {
    4. echo $i;
    5. } while ($i > 0);
    6. ?>

    上面代码中,$i 肯定不大于0,也执行了。

    当然,你还不能理解,实在想不到应用场景也没关系,可以完全跳过此块。
    do…while用的情况比较少。我们有可能用在资源处理如:文件打开等地方。


    # for循环控制语句
    for 循环是 PHP 中的一种计数型循环,它的语法比较数活多变。这是一个必须要掌握的知识点。
    ## 语法
    ```
    for (表达示1; 表达示2; 表达示3){
    需要执行的代码段
    }

    1. + 表达式1 是初始化赋值,可以同时赋值`多个代码`
    2. + 表达示2 在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。如果值为 FALSE,则终止循环。
    3. + 表达示3 在每次循环之后被求值。
    4. ## 代码
    5. ```php
    6. <?php
    7. for ($i = 1; $i <= 10; $i++) {
    8. echo '不知道是第'.$i.'次相亲,已经麻木了!<br />';
    9. }
    10. ?>

    使用For循环完成这种效果

    重点-控制循环

    语句 作用
    exit exit之前我们讲过了,从当前处停止后续执行
    break 之前遇到过,跳出循环或者跳出结构体执行后续代码
    continue 跳出此次循环,下次循环继续
    1. <?php
    2. for ($i = 1; $i <= 10; $i++) {
    3. if($i == 4){
    4. //待会儿换成contiune试试
    5. break;
    6. }
    7. echo '不知道是第'.$i.'次相亲,已经麻木了!<br />';
    8. }
    9. echo '结束了,结束了';
    10. ?>

    ## goto语法

    没有怎么用过,知道就行,了解就可以

    1. <?php
    2. goto wan;
    3. echo '天王盖地虎';
    4. wan:
    5. echo '小鸡炖蘑菇';
    6. ?>

    通过上例,我们发现直接显示输出了:小鸡炖蘑菇。

    1. <?php
    2. for($i=0; $i<100; $i++) {
    3. echo '第'. $i .'周往返北京大连<br />';
    4. if($i == 17){
    5. goto end;
    6. }
    7. }
    8. end:
    9. echo '集团公司要求停止此项';
    10. ?>

    注:
    goto 操作符可以用来跳转到程序中的另一位置。
    该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。
    PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。


    # declare 语法
    涉及到了函数相关的知识,若你有一定的基础,可以继续下面的学习。





  • 相关阅读:
    如何去除电脑上软件图标的快捷键小箭头
    三维地图如何加载gltf数据代码
    实时获取三维地图相机角度,改变三维观赏角度
    完美解决win10家庭版本系统无法远程连接问题
    svn提交批量选中文件
    oracle sql developer 如何支持多个窗体,打开多张表,多个tab,同时查看多个数据表
    sqldevelper批量导出sql文件
    原生javascript与jquery的区别(持续记录)
    iframs里子,孙页面与父,爷页面,以及多层嵌套的iframe中,js变量,方法以及元素的互相获取,调用
    Eclipse如何将多行注释的星号去掉
  • 原文地址:https://www.cnblogs.com/pangxiansheng/p/5d771c96853bda2bc7aea60d9219c528.html
Copyright © 2011-2022 走看看