流程控制
任何PHP脚本都是由一系列语句构成。
一天语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句,或甚至是一个什么也不做的语句(空语句)。
语句通常以分号结尾。
此外,还可以用花括号将一组语句封装成一个语句组。
语句组本身可以当做是一行语句。
1,运算符
运算符是可以通过给出的一个或多个值(用编程行话说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。
运算符可按照其能接受的值来分组。
一元运算符只能接受一个值,例如!(逻辑取反运算符)或++(自增运算符)。
二元运算符可接受两个值,例如熟悉的算术运算符+、-、大多数PHP运算符都是这种、
三元运算符可以接受三个值,通常就简称为三元运算符(尽管称之为条件运算符可能更合适)。
2,算数运算符
| 例子 | 名称 | 结果 |
|---|---|---|
| +$a | 标识 | 根据情况将 $a 转化为 int 或 float。 |
| -$a | 取反 | $a 的负值。 |
| $a + $b | 加法 | $a 和 $b 的和。 |
| $a - $b | 减法 | $a 和 $b 的差。 |
| $a * $b | 乘法 | $a 和 $b 的积。 |
| $a / $b | 除法 | $a 除以 $b 的商。 |
| $a % $b | 取模 | $a 除以 $b 的余数。 |
| $a ** $b | 求幂 | $a 的 $b次方的值。 |
除法运算符总是返回浮点数。
只有在夏磊情况例外:两个操作数都是证书(或字符串转换成的整数)并且正好能整除,这是它返回的是一个整数,整数除法可参考intdiv()方法;
取模运算符的操作数在运算之前都会转成int浮点数取模运算可参考fmod();
取模运算符%的结果和被除数的符号(正负号)相同,即$a % $b的结果和$a的符号相同。
3,关系比较运算符
| 例子 | 名称 | 结果 |
|---|---|---|
| $a == $b | 等于 | true,如果类型转换后 $a 等于 $b。 |
| $a === $b | 全等 | true,如果 $a 等于 $b,并且它们的类型也相同。 |
| $a != $b | 不等 | true,如果类型转换后 $a 不等于 $b。 |
| $a <> $b | 不等 | true,如果类型转换后 $a 不等于 $b。 |
| $a !== $b | 不全等 | true,如果 $a 不等于 $b,或者它们的类型不同。 |
| $a < $b | 小与 | true,如果 $a 严格小于 $b。 |
| $a > $b | 大于 | true,如果 $a 严格大于 $b。 |
| $a <= $b | 小于等于 | true,如果 $a 小于或者等于 $b。 |
| $a >= $b | 大于等于 | true,如果 $a 大于或者等于 $b。 |
| $a <=> $b | 太空船运算符(组合比较符) | 当$a小于、等于、大于 $b时 分别返回一个小于、等于、大于0的 int 值。 |
等于和全等的区别
自己猜去
4,逻辑运算符
| 例子 | 名称 | |
|---|---|---|
| ! $a | Not(逻辑非) | **true**,如果 $a 不为 **true**。 |
| $a && $b | And(逻辑与) | **true**,如果 $a 和 $b 都为 **true**。 |
| $a || $b | Or(逻辑或) | **true**,如果 $a 或 $b 任一为 **true**。 |
逻辑运算符的短路特性
5,字符串拼接
| 运算符 | 说明 | 示例 |
|---|---|---|
| . | 连接运算符 |
如果连接字符串时,第一个运算数不是字符串,那么连接符两边都要有空格,否则会报错。
6,赋值/复合赋值运算符
| = | 赋值 | $a=10,将数据10赋给$a变量 |
|---|---|---|
| += | 加 | $a += 3,等价于$a = $a + 3 |
| -= | 减 | $a -= 3,等价于$a = $a – 3 |
| *= | 乘 | $a = 3,等价于$a = $a 3 |
| /= | 除 | $a /= 3,等价于$a = $a / 3 |
| %= | 求模 | $a %= 3,等价于$a = $a % 3 |
| .= | 连接 | $a .= $b,等价于$a = $a . $b |
注意:复合赋值运算符是一种简写形式,但是是一种独立的运算符,功能相当于展开形式,但实际运算并不展开,优先级比同功能运算符低.
7,递增递减运算符。
| 例子 | 名称 | 效果 |
|---|---|---|
| ++$a | 前加 | $a 的值加一,然后返回 $a。 |
| $a++ | 后加 | 返回 $a,然后将 $a 的值加一。 |
| —$a | 前减 | $a 的值减一, 然后返回 $a。 |
| $a— | 后减 | 返回 $a,然后将 $a 的值减一。 |
$a++ / $a— : 先用 a 值 , 后进行运算
++$a / —$a : 先进行运算,后使用计算后的 a 值
i++ , 先用后加
++i, 先加后用
8,条件运算符
如果“表达式1成立”则执行表达式二,否则执行表达式三
因为是运算符所以CPU是直接加载运算的,执行效率快。简单的判断应用较多。
if 结构是语言中的一种解构语法,有解释器质性,速度慢,if更直观,适用复杂结构的条件。
9,错误抑制符
/@表达式
错误抑制符“@”用于忽略表达式的错误信息。
10,运算符优先级
| 优先级由高到低 | 运算符 |
|---|---|
| 1 | ++、—、@ |
| 2 | ! |
| 3 | 、/、%, * |
| 4 | +、- |
| 5 | <、<=、>、>= |
| 6 | ==、!=、===、!== |
| 7 | &&、|| |
| 8 | ??、?: |
| 9 | =、+=、-=、*=、/=、%=、.= |
| 结合方向 | 运算符 | 附加信息 |
|---|---|---|
| 不适用 | clonenew | clone 和 new |
| 右 | ** | 算术运算符 |
| 不适用 | +-++—~(int)(float)(string)(array)(object)(bool)@ | 算术 (一元 + 和 -), 递增/递减 , 按位 , 类型转换 和 错误控制 |
| 左 | instanceof | 类型 |
| 不适用 | ! | 逻辑运算符 |
| 左 | */% | 算术运算符 |
| 左 | +-. | 算数 (二元 + 和 -), array 和 string (. PHP 8.0.0 前可用) |
| 左 | <<>> | 位运算符 |
| 左 | . | string (PHP 8.0.0 起可用) |
| 无 | <<=>>= | 比较运算符 |
| 无 | ==!====!==<><=> | 比较运算符 |
| 左 | & | 位运算符 和 引用 |
| 左 | ^ | 位运算符 |
| 左 | | | 位运算符 |
| 左 | && | 逻辑运算符 |
| 左 | || | 逻辑运算符 |
| 右 | ?? | null 合并运算符 |
| 无关联 | ? : | 三元运算符 (PHP 8.0.0 之前左联) |
| 右 | =+=-==*=/=.=%=&=|=^=<<=>>=??= | 赋值运算符 |
| 不适用 | yield from | yield from |
| 不适用 | yield | yield |
| 不适用 | ||
| 左 | and | 逻辑运算符 |
| 左 | xor | 逻辑运算符 |
| 左 | or |
11,isset()函数
isset(mixed $var, mixed $... = ?): bool
检测变量是否已设置 并且非空
12,empty()函数
empty(mixed $var): bool
检查一个变量是否为空
判断一个变量是否被认为是空。当一个变量并不存在,或者它的值等同于false,那么他就会被认为不存在,如果变量不存在的话,empty()并不会产生警告。
13分支语句 if
对于分支语句我们并不陌生,几乎没一门语言中都会存在只是在书写语法上有些区别,但是实际更能差别不大。
if会先进行表达式布尔求值,弱国表达式的值为true PHP将执行表达式一,如果值为false将执行else{}里面的。
14,分支语句——Switch-case
switch(表达式){case 结果1:相关代码1;break;case 结果2:相关代码2;break;……case 结果n:相关代码n;break;default:默认代码;}
如果“表达式”的值等于结果一,则执行相关代码1;
否则如果表达式的值等于结果2,则执行相关代码2往后以此类推,
另外,如果表达式的值与所有case的值都不能匹配这执行default 的默认代码。
