在之前我们已经使用过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 语法

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

前端PHP入门-007-流程控制的更多相关文章

  1. Python3.7.4入门-2流程控制工具

    2 流程控制工具 记得在语句后加冒号 2.1 while # Fibonacci series: # the sum of two elements defines the next a, b = 0 ...

  2. python语法入门之流程控制

    python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...

  3. PHP入门之流程控制

    前言 上一篇文章对PHP的一些类型和运算符进行了简单的讲解.PHP入门之类型与运算符 这篇简单讲解一下流程控制.结尾有实例,实例内容是用switch分支和for循环分别做一个计算器和金字塔. 分支控制 ...

  4. Python 3 快速入门 2 —— 流程控制与函数

    本文假设你已经有一门面向对象编程语言基础,如Java等,且希望快速了解并使用Python语言.本文对重点语法和数据结构以及用法进行详细说明,同时对一些难以理解的点进行了图解,以便大家快速入门.一些较偏 ...

  5. 04-Python入门学习-流程控制

    一.流程控制if 语法1: if 条件:  code1  code2  code3  .... age=180 height=163 weight=75 sex='female' is_beautif ...

  6. 04 Python入门学习-流程控制(if else elif while for)

    一:流程控制if 语法一: if 条件: code1 code2 code3 ... age = 20 height = 170 weight = 60 sex = 'female' is_beaut ...

  7. [Web 前端] 023 js 的流程控制、循环和元素的获取、操作

    1. Javascript 流程控制 用于"基于不同条件执行不同的动作"的场合 1.1 if 语句 三种形式 // 第一种 if... // 第二种 if... else ... ...

  8. 【原】Java学习笔记007 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // for循环 // ...

  9. python入门之流程控制

    if else 格式: if 条件 command1 command2elif 条件: command3    command4 else: command3 command4 注意条件后和else后 ...

随机推荐

  1. 关于JavaScript定时器我的一些小理解

    因为自己在平时工作中,有些功能需要用到定时器,但是定时器并不像我们表边上看到的那样,所以这周末我看看书查查资料,深入研究了一下JavaScript中的定时器,那么废话不多说,下面进入我们今天的正题. ...

  2. myeclipse生成类的帮助文档

    http://blog.csdn.net/tabactivity/article/details/11807233

  3. 第二次c++作业

    用c语言实现电梯问题的方法: 先用一堆变量存储各种变量,在写一个函数模拟电梯上下移动载人放人的过程. c++: 构造一个电梯的类,用成员函数实现电梯运作的过程. 对c和c++的理解太浅,并没有感觉到用 ...

  4. RAR和ZIP:压缩大战真相 (挺赞值得了解)

    前言--王者归来? 等待足足两年之久,压缩霸主WinZip终于在万众期待下发布了9.0正式版.全世界自然一片沸腾,在世界各大知名下载网站中,WinZip9.0再次带起下载狂潮.然而此时国内并没有王者回 ...

  5. #Leetcode# 922. Sort Array By Parity II

    https://leetcode.com/problems/sort-array-by-parity-ii/ Given an array A of non-negative integers, ha ...

  6. HDU 2154 跳舞毯

    http://acm.hdu.edu.cn/showproblem.php?pid=2154 Problem Description 由于长期缺乏运动,小黑发现自己的身材臃肿了许多,于是他想健身,更准 ...

  7. 设计模式PHP篇(三)————适配器模式

    简单的适配器模式: interface Adaptor { public function read(); public function write(); } class File implemen ...

  8. [翻译]API Guides - Layouts

    官方文档地址:http://developer.android.com/guide/topics/ui/declaring-layout.html PS:API Guides里面的内容不免都简单些,翻 ...

  9. postgis_LayerTransform

    [转] postgis_LayerTransform 一个在postgis中结合中国国情,批量对数据进行加偏到百度坐标,高德谷歌的火星坐标,或者逆向纠偏 安装: 在postgresql-postgis ...

  10. Linux服务器ping不通域名出现的unknown host 错误解决办法

    "ping: unknown host www.baidu.com" 解决方法 如果某台Linux服务器ping不通域名, 如下提示: # ping www.baidu.compi ...