【PHP入门】2.2 流程控制

-流程控制-

流程控制:代码执行的方向

2.2.1控制分类

顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构)

分支结构:给定一个条件,同时有多种可执行代码(块),然后会根据条件执行某一段代码

循环结构:在某个条件控制范围内,指定的代码(块)可以重复执行

*顺序结构

顺序结构:最基本结构,所有代码默认都是从上往下依次执行

分支结构

在PHP中,分支结构主要有两种:if分支和switch分支

2.2.2 IF分支

If:如果的意思,给定一个条件,同时为该条件设置多种(两种)情况,然后通过条件判断来实现具体的执行段

基本语法:if分支PHP也提供多种方式来实现

//最简if:只有一段代码,但是可以选择是否执行
If('条件表达式'){
     //满足条件所要执行的内容; //顺序结构
}

2.2-1

//基础if:有两面性,满足条件或者不满足条件都有对应的执行代码
If('条件表达式'){
//满足条件后执行的代码段;
}else{
//不满足条件执行的代码段;
}

2.2-2

//复杂if结构:在判断条件之后,通常就有两种结果:满足或者不满足,在不满足之后还可以再次进行条件判断

If('条件表达式1'){
//满足条件表达式1的代码段;
}elseif('条件表达式2'){
//不满足表达式1条件,但是满足表达式2的代码;
}//可以使用多个elseif来进行再次条件筛选
Else{
//全部不满足要执行的代码;
}

2.2-3

注意:如果条件特别多才会采用复合if形式

1、 如果条件比较单一(同一个条件),会采用elseif复合方式

2、 如果判断条件不一致,建议使用嵌套语法(不宜有太多层嵌套:影响代码美观)

If分支,适用于所有的条件判断(分支结构)

2.2.3 Switch分支

Switch分支:有一组情形存在,同过一条件,通常有多个值,但是每一个值都会有对应不同的代码要执行。

Switch判断方式:是将条件放到分支结构内部判断

//Switch基本语法:
Switch(条件表达式){     //所有条件判断:逐个进行
	Case1: //当前条件表达式的结果与值1相等(==)
	'要执行的代码段;'
	Break;    //在switch中,如果条件匹配成功,那么系统就不会再次匹配条件,会自动顺序执行向下的所有代码(case代码除外),需要中断执行:break表示中断switch(结束)。
	Case2:
	'要执行的代码段;'
 	Break;
//可以使用类似else的语法:都不匹配
Default:
//匹配失败的代码;
Break;
}

2.3-4

If和switch的选择

1、 if能做所有的分支结构事情

2、 switch处理的是条件比较多,同时比较单一,而且是固定值匹配的分支结构

循环结构

循环结构:代码段在一定的控制下,可以多次执行

PHP中循环结构有以下几种:
For循环:通过条件、起始和终止判断执行
While循环:通过判断条件终止
Do-while循环:跟while差不多
Foreach循环:专门针对数组

2.2.4 For循环

For循环基本语法

For('条件表达式1';'条件表达式2';'条件表达式3'){
//条件表达式1:定义初始化条件,可以有多种赋值语句存在,使用逗号分隔即可
//条件表达式2:边界判定,限定循环执行的次数
//条件表达式3:用来执行条件变化(自操作)
//循环体
}

2.3-5

For循环执行原理:

1、 执行条件表达式1:定义初始化条件(执行一次)
2、 执行条件表达式2:判断条件(N次)
     2.1  满足条件:执行循环体
     2.2  不满足条件:循环结束
3、 执行循环体:(N次)
4、 执行条件表达式3:循环变量变化(N次)
5、 执行条件表达式2:判断条件(N次)
6、 重复执行3-4-2步骤:直到第2步不满足条件结束循环

For循环中条件表达式1的多变量定义

2.2-6

//For循环特殊使用:for循环中对应的括号(条件)可以一个都没有(死循环):一定要避免出现
For(;;){
 //循环体
}

2.2-7

2.2.5 While循环

while循环基本语法:

//条件初始化;
while(条件表达式){
//条件表达式就是判断边界条件
     循环体; 
//循环条件的变化
}

2.2-8

For与while的选择

1、 如果是基于固定已知条件(数值而且是有规律的变化),使用for循环

2、 while可以做灵活的条件判定(while使用的比较多)

2.2.6 do-while循环

do-while:看着很像while,while首先进行条件判定然后执行循环体,有可能出现第一次就条件不满足,那么就会直接失败(循环体一次都不执行)。Do-while就是先干了再说(执行循环体),后判断条件。(至少会执行一次循环体)

//do-while基本语法:
do{
//循环体
}while(条件表达式);

2.2-9

2.2.7 循环控制

循环控制:在循环内部对循环本身进行控制

中断控制:重新开始循环,循环体中还有其他内容,也再执行

Continue 层级;    //默认是1(循环可以多层嵌套)

2.2-10

终止控制:循环直接结束

Break 层级;       //默认是1

2.2-11

因为循环经常性会碰到嵌套(循环中间包含循环),如果在循环内部有些条件下,明确可以知道当前循环(或者说外部循环)不需要继续执行了,那么就是可以使用循环控制来实现:其中内部循环也可以控制到外部,就是通过使用层级参数。

Continue 2;   //当前自己循环后面内容不再执行,同时外部循环如果还有循环体也不再执行,重新来过;
Break 2;      //当前自己循环结束,同时外部也结束(如果还有外部不受影响,继续执行)

2.2.8流程控制替代语法

流程控制替代语法:分支和循环结构的替代语法

PHP本身是嵌入到HTML中的脚本语言,需要在HTML中书写一些关于判断或者循环的结构语法,必须符合PHP标签规范,需要HTML与PHP进行混搭,如果使用原始的PHP代码那么会非常不美观。

需求:打印一个九九乘法表,使用表格来展示

2.2-12

在PHP书写到HTML中的这些大括号{}非常不美观,所以PHP提供了一种替代机制,让其可以不用书写大括号:

2.2-13

PHP中具体有哪些替代语法呢?PHP应该在HTML中只做数据输出,输出通常伴有条件判断和循环操作,因此PHP提供了对应分支结构和循环结构的替代语法:全部都是对应的一个模式:

//左大括号{使用冒号替代:
//右大括号}使用end+对应的起始标记替代
Ifif():  endif;
Switchswitch():  endswitch;
For
While
foreach

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/260425.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于MLP完成CIFAR-10数据集和UCI wine数据集的分类

基于MLP完成CIFAR-10数据集和UCI wine数据集的分类,使用到了sklearn和tensorflow,并对图片分类进行了数据可视化展示 数据集介绍 UCI wine数据集: http://archive.ics.uci.edu/dataset/109/wine 这些数据是对意大利同一地区种植的葡萄酒进…

Ubuntu 常用命令之 echo 命令用法介绍

echo 是一个在 Ubuntu 系统下常用的命令,主要用于在终端输出字符串或者变量。 echo 的基本语法 echo [option] [string]echo 命令的参数包括 -n:不输出结尾的换行符。-e:启用反斜杠转义字符。-E:禁用反斜杠转义(这是…

【论文解读】Efficient SAO Coding Algorithm for x265 Encoder

时间:2015年 级别:IEEE 机构:上海交通大学 摘要 x265是一款开源的HEVC编码器,采用了多种优化技术,具有较快的编码速度和优良的编码性能。作为HEVC的一项关键技术,x265还采用了样本自适应偏移(sample adap…

c++ qt 模态框和阻拦器 优先级 问题 修复 已解决

在c项目中。有 加载动画 和 模态框提醒的功能, 导致发生一个问题,有提示框的时候,动画也停止,必须点击 按钮 所有代码才能有效。 解决办法 谨慎使用 deleteLater,因为和模态框拦截有冲突, 使用 隐藏 或者 删除指针。 deleteLater 使用逻辑是 …

自动气象监测站助力生活生产

随着科技的发展,我们的生活和生产方式正在发生着日新月异的变化。其中,WX-CQ12 自动气象监测站作为一项气象监测设备,正在发挥着越来越重要的作用。它不仅为我们提供了更加准确、实时的天气信息,还为农业、交通、旅游等领域提供了…

全新「机械手」算法:辅助花式抓杯子,GTX 1650实现150fps推断

新方法结合扩散模型和强化学习,将抓取问题分解为「如何抓」以及「何时抓」,平价显卡即可实现实时交互。 手是人类与世界交互的重要部分,手的缺失(如上肢残障)会大大影响人类的正常生活。 北京大学董豪团队通过将扩散模…

stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发

stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发 文章目录 stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h 四、MDK串口收发…

VS ASP.Net Core项目还原Packages包到本地(解决服务器没有网无法重新生成的问题)

问题背景 ASP.Net Core MVC项目,无法重新生成。 现场服务器没有网,放上去的代码无法通过nuget还原包到服务器,导致无法编译无法运行。 解决办法 将Packages还原到本机(有网),然后再将代码放到服务器运行。 在有网的…

内网渗透测试基础——分析域内网段划分情况及拓扑结构

内网渗透测试基础——分析域内网段划分情况及拓扑结构 ​ 掌握了内网的相关信息后, 渗透测试人员可以分析目标网络的结构和安全防御策略,获取网段信息、各部门的IP地址段,并尝试绘制内网的拓扑结构图。当然,渗透测试人员无法了解…

深入了解Java中的锁机制

目录 1. synchronized关键字 1.1 基本概念 1.2 内置锁 1.3 限制 2. ReentrantLock 2.1 概述 2.2 公平性与非公平性 2.3 条件变量 3. 读写锁(ReadWriteLock) 3.1 概念 3.2 适用场景 4. StampedLock 4.1 概述 4.2 乐观读与悲观读 4.3 适用场…

仓储1代电子标签接口文档

标签注册 仓储1代注册 侧面按钮连按三次, 注册成功:红灯变绿灯 查询电子标签信息接口 接口地址:192.168.1.200/wms/associate/getTagsMsg 请求类型:multipart/form-data 请求方式:get 接口备注:暂无描…

如何设计用户评论表

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 上一篇提到树形结构是非…

C++_动态二维数组的两种方法

介绍 本文主要介绍使用 动态二维数组的两种方法 (PS:仅作创建 动态二维数组参考,详细使用方法根据需求自行改变) 第一种:连续存储结构的 二维动态数组(需固定 列 大小,可通过下标访问) 缺点: 1.需要在设计二维数组前写死 列 的大小 2.空间利用率不高 优点…

netty源码:(29)ChannelInboundHandlerAdapter

它实现的方法都有一个ChannelHandlerContext参数,它的方法都是直接调用ChannelHandlerContext参数对应的方法,该方法会调用下一个handler对应的方法。 可以继承这个类,重写感兴趣的方法,比如channelRead. 这个类有个子类:SimpleC…

调度算法(一)-第二十一天

目录 各种调度算法的学习思路 先来先服务(FCFS) 短作业优先(SJF) 各种调度算法的学习思路 1、算法思想 2、算法规则 3、算法用于作业调度还是进程调度 5、抢占式还是非抢占式 6、优点和缺点 7、是否会导致饥饿(进程…

【音视频 | AAC】AAC格式音频文件解析

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

C++刷题 -- KMP算法

C刷题 – KMP算法 文章目录 C刷题 -- KMP算法1.算法讲解2.算法实现 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/ 1.算法讲解 KMP算法是一种字符串匹配算法,当出现字符串不匹配时,可以记录一部分之…

PSP - 结构生物学中的机器学习 (NIPS MLSB Workshop 2023.12)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/135120094 Machine Learning in Structural Biology (机器学习在结构生物学中) 网址:https://www.mlsb.io/ Workshop at the 37th Co…

计算机网络-进阶

目录 易混淆物理层数据链路层网络层nat如何实现私有ip通信IP数据报 格式解析tcp 连接tcp流量控制滑动窗口拥塞控制 报文捕获 wireshark路由模拟器 enspcdn代理服务器 VS cdn VS web cache 计算机有了物理地址,为什么还要有ip地址?单播 多播 广播 传输层会…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现

一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端(用户): 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票(需选择影院座位)、看过(评论…