俗话说:万丈高楼平地起,想把PHP学习好,运用自如,掌握运算符和流程控制类型知识是必不可少。
一、运算符:据运算符的作用,可以将PHP中常见的运算符分为以下7类:
1.算术运算符:用于处理四则运算。
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | + | $a+$b | $a与$b 的和 |
2 | - | $a-$b | $a与$b 的差 |
3 | * | $a*$b | $a与$b 的积 |
4 | / | $a/$b | $a与$b 的商 |
5 | % | $a%$b | $a与$b 的余(模) |
6 | ++ | $a++/++$a | 先用再加/先加再用 |
7 | -- | $a--/--$a | 先用再减/先减再用 |
8 | ** | 2**4 | 幂运算:2 的 4 次方 |
2.字符串运算符:用于连接字符串。
运算符 | 示例 | 描述 |
---|---|---|
. | $str1 . $str2 | 连接运算,返回连接之后的字符串 |
3.赋值运算符:用于将表达式的值赋给变量。
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | = | $a = 10 | 将表达式的值赋给变量 |
2 | += | $a += 10 | $a = $a + 10; |
3 | -= | $a -= 10 | $a = $a - 10; |
4 | *= | $a *= 10 | $a = $a * 10; |
5 | /= | $a /= 10 | $a = $a / 10; |
6 | %= | $a %= 10 | $a = $a % 10; |
7 | .= | $a .= 'a' | $a = $a . 'a'; |
4.比较运算符:用于表达式的比较并返回一个布尔类型的值,true或false。
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | > | $a > $b | 大于 |
2 | >= | $a >= $b | 大于或等于 |
3 | < | $a < $b | 小于 |
4 | <= | $a <= $b | 小于或等于 |
5 | == | $a == $b | 等于 (值相等即可) |
6 | === | $a == $b | 全等于(二边值与类型全等) |
7 | != | $a != $b | 不相等 |
8 | !== | $a !== $b | 不全等 |
9 | <=> | $a <=> $b | 太空船php7+ |
举例说明:
var_dump(30 > 20); // ==: 只判断值是否相等, 不判断类型 // 当==二边的类型不同时,会发生类型的自动转换 // var_dump(50 == (int)'50'); // === 全等, 不仅值要相等, 类型也要相等 var_dump(60 === '60');
注:比较运算符: 返回布尔值,常用于流程控制中(if/while/for...)
<=>: 也叫组合比较符, 例如$a <=> $b, 有三种返回结果,如下:
序号 | 运算 | 结果 |
---|---|---|
1 | $a > $b | 返回>0 的整数 |
2 | $a < $b | 返回<0 的整数 |
3 | $a = $b | 返回=0 的整数 |
5.逻辑运算符:根据表达式的值返回一个布尔类型的值,true或者false
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | && | $a && $b | 逻辑与 |
2 | || | `$a || $b` | 逻辑或 |
3 | ! | !$a | 逻辑非 |
4 | xor | $a xor $b | 逻辑异或 |
6.三元运算符:也称为三目运算符,用于根据一个表达式在另两个表达式中选择一个,而不是用来
在两个语句或者程序中选择。三元运算符最好放在括号里使用。
序号 | 运算符 | 示例 | 描述 | 场景 |
---|---|---|---|---|
1 | ?: | $a ?: $b | 仅判断表达式true/false | 简化双分支 |
2 | ?? | $a ?? $b | 判断变量存在且不为 null | 设置默认值 |
举例说明:
// ? : 简化双分支if $yanzhi = 120; if ($yanzhi > 100) echo '太帅了'; else echo '真难看'; // 条件 ? true : false echo $yanzhi > 100 ? '太帅了' : '真难看';
7.错误屏蔽符:对错误信息进行屏蔽,并没有真正解决错误。
运算符 | 示例 | 描述 | 场景 |
---|---|---|---|
@ | @(10/0) | 屏蔽所有运行错误 | 线上生产环境 |
注:不能屏蔽语法错误。
二、流程控制
1.分支结构
序号 | 类型 | 语法 | 模板语法 |
---|---|---|---|
1 | 单分支 | if(){...} | if(): ... endif; |
2 | 双分支 | if(){...} else {...} | if(): ... else: ... endif; |
3 | 多分支 | if(){...} elseif {...} else {...} | if(): ... elseif: ... else: ... endif; |
4 | switch | switch() {case: ... break...} | switch(): ...endswitch; |
举例说明:
<?php # 分支结构 // 积分 $jifen = 100; //1. 单分支 if ($jifen > 100) { echo '铜牌会员'; } // 单分支模板写法:(模板语法的目标是: 干掉大括号) // 注:模板语法, 用在与html代码混编的时候 if ($jifen > 100) : echo '铜牌会员'; endif; //2. 双分支 if($jifen >= 1000){ echo '银牌会员'; }elseif(100 <= $jifen){ echo '铜牌会员'; } echo '<hr>'; // 双分支模板语法 if ($jifen >= 1000) : echo '银牌会员'; else : echo '铜牌会员'; endif; // 3. 多分支 if($jifen >= 100 && $jifen <= 50){ echo '铜牌会员'; }elseif($jifen >= 1000 && $jifen <= 9999){ echo '银牌会员'; }elseif($jifen >= 10000 && $jifen <= 99999){ echo '金牌会员'; }else{ echo '普通会员'; } echo '<hr>'; //多分支模板语法 if($jifen >= 100 && $jifen <= 50): echo '铜牌会员'; elseif($jifen >= 1000 && $jifen <= 9999): echo '银牌会员'; elseif($jifen >= 10000 && $jifen <= 99999): echo '金牌会员'; else: echo '普通会员'; endif; // 4. switch: 简化多分支 switch(true){ case $jifen >= 100 && $jifen <= 50 : echo '铜牌会员'; break; case $jifen >= 1000 && $jifen <= 9999 : echo '银牌会员'; break; case $jifen >= 10000 && $jifen <= 99999 : echo '金牌会员'; break; default: echo '普通会员'; } //简化多分支模板语法 switch(true): case $jifen >= 100 && $jifen <= 50 : echo '铜牌会员'; break; case $jifen >= 1000 && $jifen <= 9999 : echo '银牌会员'; break; case $jifen >= 10000 && $jifen <= 99999 : echo '金牌会员'; break; default: echo '普通会员'; endswitch;
2.循环结构
序号 | 类型 | 语法 | 模板语法 |
---|---|---|---|
1 | 入口判断型 | while(){...} | while(): ... endwhile; |
2 | 出口判断型 | do {...} while(); | do : ... while(); |
3 | 计数型 | for(){...} | for () : ... endfor; |
循环控制关键字:
序号 | 关键字 | 描述 |
---|---|---|
1 | continue | 终止本次循环,提前进入下一轮 |
2 | break | 跳出本层循环 |
举例说明:
<?php # 循环 $type = ['砖茶', '沱茶', '散茶', '其它']; // 1. 入口判断型 while循环:while(){...} $types = current($type); while ($types = current($type)) { echo $type . '<br>'; // 更新循环条件, 没有这个语句, 会进入死循环 next($type); } reset($type); // 模板语法 while ($types = current($type)) : echo $types . '<br>'; // 更新循环条件, 没有这个语句, 会进入死循环 next($type); endwhile; echo '<hr>'; // 2. 出口判断型 do{}while()循环 do { $types = current($type); echo $types . '<br>'; // 更新循环条件, 没有这个语句, 会进入死循环 next($type); } while ($types = current($type)); // 无论条件是否为真,至少会执行一次 // 没有对应的模板语法 // 3. 计数型 for (初始值; 条件; 增量){ 要执行的代码;} echo '数组中有 : ' . count($type); // $i = 0;循环变量初始化 // $i < count($cities): 循环条件 // $i++: 更新循环条件 for ($i = 0; $i < count($type); $i++) { echo $type[$i] . '<br>'; } // 模板语法 for ($i = 0; $i < count($type); $i++) : // echo $type[$i] . '<br>'; endfor; echo '<hr>'; //循环控制关键字: // continue: 终止当前循环,提前进入下一轮 $type = ['砖茶', '沱茶', false, '散茶', null, '其它']; for ($i = 0; $i < count($type); $i++) : // 终止本次循环,提前进入下一轮 if (!$type[$i]) continue; echo $type[$i] . '<br>'; // break; 跳出本层循环 if ($type[$i] === '散茶') break; endfor;
三、学习总结:
算数运算符, 可以实现变量值在数学意义上的加减乘除幂等。流程控制, 可满足不同的条件时, 执行相应的代码。
在编写PHP代码中,掌握以下条件语句,十分重要。
if 语句 - 在条件成立时执行代码;
if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码;
if...else if....else 语句 - 在若干条件之一成立时执行一个代码块;
switch 语句 - 在若干条件之一成立时执行一个代码块。