热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端PHP入门007流程控制

在之前我们已经使用过if判断语句基本语法,不能有半点马乎,完全是语法规范规定的,不这么写就错!<?php定义是否打赏的变量$dashangtrue;i

在之前我们已经使用过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. type="text" name="num1">
  2. name="fh">
  3. value="jia"> +
  4. value="jian"> -
  5. value="c"> x
  6. value="chu"> /
  7. value="qy"> %
  8. type="text" name="num2">
  9. type="submit" value="运算" />
  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()[推荐写法]

代码执行流程图
前端PHP入门-007-流程控制

作业:
写一个网页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. ?>

流程图
前端PHP入门-007-流程控制

注意:
我们在代码段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..

流程图

前端PHP入门-007-流程控制

代码实验室

  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 .'天
    '
    ;
  39. //每次执行让$count+1,这样的话,就不会产生$count永远小于3的情况了
  40. $count++;
  41. //循环结束
  42. }
  43. echo '后续代码';
  44. ?>

逻辑图

前端PHP入门-007-流程控制


# while循环

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

完成效果图如下:
前端PHP入门-007-流程控制

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

第二步: 完成10行的操作

第三步: 设置斑马线


完整代码:

  1. php
  2. $i=0;
  3. echo '';
  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 '
  11. ';
  12. }else{
  13. echo '
  14. ';
  15. }
  16. }
  17. echo '
  18. ';
  19. $i++;
  20. //同理,每一行结束是不是应该有一个
  21. 结束标签呢?
  22. if($i%10==0){
  23. echo '';
  24. }
  25. }
  26. echo '
  27. '.$i.'
    '
    ;
  28. ?>

改进代码双层循环

  • 先输出表格标签
  • 通过第一层循环再输出行标签
  • 在第一层循环里面再插入一层循环输出标签
  1. php
  2. echo '';
  3. $i=0;
  4. while($i<10){
  5. echo '
  6. ';
  7. $j=0;
  8. while($j<10){
  9. echo '
  10. ';
  11. $j++;
  12. }
  13. echo '
  14. ';
  15. $i++;
  16. }
  17. echo '
  18. '.$j.'
    '
    ;
  19. ?>
  20. ```
  21. 练习题:
  22. 九九乘法表
  23. ----------
  24. # do...while循环的区别
  25. do...while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样。
  26. ## 语法
  27. ```php
  28. do {
  29. //代码块
  30. } 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. for ($i = 1; $i <= 10; $i++) {
  7. echo '不知道是第'.$i.'次相亲,已经麻木了!
    ';
  8. }
  9. ?>

使用For循环完成这种效果
前端PHP入门-007-流程控制

重点-控制循环

语句 作用
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.'次相亲,已经麻木了!
    '
    ;
  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 .'周往返北京大连
    '
    ;
  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-流程控制



来自为知笔记(Wiz)



推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
author-avatar
落可可lookeke
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有