PHP 简介03-运算符/流程控制
1. 运算符 Operation
PHP中运算符主要有以下七种:
- 算术运算符
- 自增/自减运算符
- 赋值运算符
- 比较运算符
- 拼接运算符
- 逻辑运算符
- 三元运算符
1.算术运算符:
加 减 乘 除 取模(取余)
+ - * / %
取模(%)详解:
1)普通取模:
1 | var_dump(5%2); #1 |
2)高阶取模
①取模的正负:取决于被除数的正负
1 | var_dump(5%2); #1 |
②取模结果的范围:x~y
1 | var_dump(0%3); #0 # %3 |
1 | var_dump(0%5); #0 # %5 |
若需求2~5,如何才能达到需求:
1 | 0 ~ ? #?=5-2=3 0~3为%4的结果 |
推理到x~y,则有:%(y-x+1)+x
1 | 0 ~ ? # ?=y-x 为%[(y-x)+1]的结果 |
2.拼接运算符 string
1.符号:
. 小数点
2.作用 :
拼接变量与字符串 / 拼接变量与变量
3.实例:
1 | $a='winter'; |
3.赋值运算符 equal
主要有以下几种赋值运算符:
变量=值 赋值(先运算=右边的,再运算=左边的)
变量+=值 变量=变量+值
变量-=值 变量=变量-值
变量*=值 变量=变量*值
变量/=值 变量=变量/值
变量%=值 变量=变量%值
变量.=值 变量=变量.值
4.比较运算符 compare
1.比较的结果都是布尔值(bool)
2.运算符:
> >= 大于,大于等于
< <= 小于,小于等于
== 等于 (判断=两端的值是否相等)
=== 全等于 (判断两边的值和数据类型是否全部相等)
!= 不等于 (判断两边的值是否不相等)
!== 全不等于 (判断两边的值和数据类型是不是都不相等)
5.逻辑运算符 logic
| 类型 | 运算符 | 运算规则 |
|---|---|---|
| 逻辑与 | && | 两边全真才是真,一边为假即为假 |
| 逻辑或 | || | 一边为真即是真,两边为假才是假 |
| 逻辑非 | ! | 真即是假,假即是真 |
6.自增/自减 increment
1.自增运算符:++
2.自减运算符:--
3.易混乱点:
a++ 先返回a值,再给a+1
++a 先给a+1,再返回a值
1 | $a=10; |
7.三元运算符 three
一元运算符:! a++ a--
二元运算符:a=b a%b a-b
三元运算符:?:
1.定义:简化的if-else结构
2.格式:条件表达式 ? true环境 : false环境;
3.运算规则:
当条件表达式成立时,进入true环境执行;当条件不成立时,进入false环境。
4.实例
echo 1+1==2?'yes!':'no';
补充:运算符优先级

2. PHP流程控制
在PHP中,主要有四种结构:顺序结构,分支结构,循环结构和异常结构,其中异常结构主要适用于面向对象,先不进行介绍。
1.顺序结构:代码从上往下依次执行;(参考HTML中文档流)
2.分支结构:通过 if / switch 来进行分支选择
3.循环结构:通过 for / while 来重复执行某一部分的代码
以下详细介绍分支结构和循环结构的具体内容
1.顺序结构(不介绍)
2.分支结构
1.单一分支结构:(if)
if( 条件表达式 ) 一行代码;该结构只能影响紧跟在
if后面的第一行代码,从第二行开始,就不受if判断结果的影响if( 条件表达式 ){ 一个代码块; }该结构后面可以跟一整个代码块,通过复合结构(代码块),
if可以影响多条语句
2.双向分支结构(else)
if( 条件表达式 ){ 代码段;}else{ 代码段;}if语句的延伸,可以对不满足if条件的情况进行阐述
3.多向条件分支结构(elseif)
if(条件表达式){代码块}elseif(条件){ ... }elseif(条件){ ... }...else{...}在
elseif中只有一个被执行,多个条件是逻辑或的关系,只要有一个满足,就可以进入相应的true环境,优先处理包含范围较小的条件
4.巢状条件分支结构(if 嵌套)
```
if(条件表达式){ if(条件表达式){ if(条件表达式){ ... }else{ ... } }else{ ... } }else{ ... }1
2
3
4
5
6
7
8
9
10
11
12
13
14
这里的多个条件是逻辑与的关系,要同时满足才能进入最深的true环境
5.多向条件分支结构(`switch`)
- ```
switch( 表达式 ){
case 值1: 代码块1;break;
case 值2: 代码块2;break;
...
case 值n: 代码块n;break;
default: 代码块n+1;
}
专门用于等值判断,
switch后面的表达式数据类型只能是整型或字符串,不能为bool值;若不加
break,会在匹配到值后继续向下执行后面的所有标识;default代表不与之前所有值匹配的情况;
6.练习 简易计算器
需求: 由用户输入两组 数值, 并选择运算符, PHP根据运算符结算结果
1 | //1.接收数据: |
3.循环结构
1.while循环(当)
- 格式:
1 | $sum=1; 初始化; |
循环规则:
初始化 –> 条件 成立–> 代码块 –>条件(循环)
不成立 –> 跳出循环
注意: while 循环常用来控制循环次数未知的循环结构,条件表达式的结果必须为 bool 值
2.do…while循环(直到)
- 格式:
1 | $num=1; 初始化; |
循环规则:
初始化 –> 代码块 –> 条件 成立 –> 代码块(循环)
不成立 –> 跳出循环
注意: do...while 是先执行一次代码块,然后判断是否符合条件,来决定是否继续循环;
while(条件) 后面要加上分号 ;
适合执行至少必须循环一次的情况。
3.for循环
格式:
for( 初始化 ; 条件表达式 ; 增量 ){ 代码块; }循环规则:
初始化 –> 条件表达式 成立–> 代码块 –> 增量 –> 条件 –> 代码块(循环)
不成立–> 跳出循环
注意点:
for语句中的三部分可以部分或全部为空,如把第一部分初始化语句提到for语句之前,第二部分和第三部分提到for语句之内;(for的退化形式)
```
//把初始化提到for之前$num=1; for(;$num<10;$num++){echo $num;}1
2
3
4
5
6
7
8
9
- ```
//把第三部分增量提到for之内
$num=1;
for(;$num<10;){
echo $num;
$num++;
}
```
//把第二部分条件表达式提到for之内$num=1; for(;;){ if($num<10)break; echo $num; $num++; }1
2
3
4
5
6
7
8
9
10
11
12
- for语句中的每个部分都可以写多个表达式,之间用 `,` 逗号隔开;
#### 4.循环语句之间的区别
- while语句先判断再执行,do...while语句先执行一次,再判断是否继续循环。
- while语句计算机执行速度较快,for语句代码书写方便,排版整洁,使用程度较高。
#### 5.for循环使用技巧
- 当条件表达式为空或非false值时,程序条件永远满足,产生死循环$x=0;
for(;;){echo $x.' '; $x++;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- 当条件表达式为与false等价(0 , 0.0,‘ ‘,...)时,程序认为条件不满足,不会执行;
- 当初始化表达式为空时,false=0,初始值为0;
- 当增量为空时,若条件成立则一直循环输出初始值;z
### 4.特殊流程控制符
#### 1.continue
当执行到continue时,会准备进入下一轮循环
#### 2.break
当执行到break时,会马上结束当前循环或者分支结构
#### 3.die
当执行到die时,整个程序结束(后面全部不会执行)(?断点调试?)
### 5.扩展使用
**需求:输出0~9,如果碰到4,跳过**for($i=0;$i<10;$i++){
if($i!==4){ echo $i.' '; }}
1 |
for($i=0;$i<10;$i++){
if($i==4){
continue;
}echo $i.' ';
}
1 |
|
for($i=0;$i<10;$i++){
if($i==4){
break;
}echo $i.' ';
}
1 |
|
for($i=0;$i<10;$i++){
if($i==4){
die('111');
}echo $i.' ';
}
1 |
|
<?php for() ?>
HTML代码块
<?php endfor ?>
1 |
|
<?php if() ?>
HTML代码块
<?php endif ?>
<?php if() ?>
HTML代码块(true环境)
<?php else: ?>
HTML代码块(false环境)
<?php endif ?>
<?php if(): ?>
html代码块 (true环境)
<?php elseif(): ?>
html代码块 (true环境)
<?php elseif(): ?>
html代码块 (true环境)
<?php elseif(): ?>
html代码块 (true环境)
<?php else(): ?>
html代码块 (false环境)
<?php endif ?>
```