批改状态:合格
老师批语:写的不错!总结的很好,不过模板语法是在和html混写的时候尽量使用的。
PHP中的运算符大致分为几下几类:
算术运算符
赋值运算符
比较运算符
逻辑运算符
递增/递减运算符
数组运算符
三元运算符
组合比较符,又称太空船运算符
| 运算符 | 名称 | 描述 | 例子 | 结果 |
|---|---|---|---|---|
| a + b | 加法 | 求和 | 5 + 5 | 10 |
| a - b | 减法 | 求差 | 10 - 5 | 5 |
| a * b | 乘法 | 求积 | 5 * 5 | 25 |
| a / b | 除法 | 求商 | 15 / 5 | 3 |
| a % b | 求模 | 取余 | 15 % 6 | 3 |
| - a | 取反 | 取a的反数 | <?php $a = 5;echo -$a; |
-5 |
| a.b | 并置 | 连接2个字符串 | ‘hel’.’lo’ | hello |
| 运算符 | 等同于 | 描述 |
|---|---|---|
| a = b | a = b | 把b的值赋给a |
| a += b | a = a + b | 加 |
| a -= b | a = a - b | 减 |
| a *= b | a = a * b | 乘 |
| a /= b | a = a / b | 除 |
| a %= b | a = a % b | 模(除法的余数) |
| a .= b | a = a . b | 连接两个字符串 |
| 运算符 | 名称 | 描述 | 实例 |
|---|---|---|---|
| x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false |
| x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5===”5” 返回 false |
| x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true |
| x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
| x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!==”5” 返回 true |
| x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false |
| x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true |
| x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false |
| x <=y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
| 运算符 | 名称 | 描述 | 实例 |
|---|---|---|---|
| x and y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6;y=3; (x < 10 and y > 1); 返回 true |
| x or y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6;y=3;(x==6 or y==5) ;返回 true |
| x xor y | 异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true | x=6;y=3;(x==6 xor y==3); 返回 false |
| x && y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 ; y=3 ; (x < 10 && y > 1) ; 返回 true |
| x | | y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6;y=3;(x==5 | | y==5) 返回 false |
| ! x | 非 | 如果 x 不为 true,则返回 true | x=6;y=3;!(x==y) 返回 true |
| 运算符 | 名称 | 描述 |
|---|---|---|
| ++ x | 预递增 | x 加 1,然后返回 x |
| x ++ | 后递增 | 返回 x,然后 x 加 1 |
| - - x | 预递减 | x 减 1,然后返回 x |
| x - - | 后递减 | 返回 x,然后 x 减 1 |
| 运算符 | 名称 | 描述 |
|---|---|---|
| x + y | 集合 | x 和 y 的集合 |
| x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
| x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
| x != y | 不相等 | 如果 x 不等于 y,则返回 true |
| x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
| x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
语法格式是:(expr1) ? (expr2) : (expr3),对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
示例如下:

PHP7+后出现了组合比较运算符,又称太空船运算符,<=>,组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。它的返回值为1,0,-1。
示例如下:
<?php// 数值为0,表示相等// 数值为1,表示前者大于后者// 数值为-1,表示前者小于后者// 示例一:比较整形echo 5<=>5,'<br>';echo 8<=>5,'<br>';echo 5<=>8,'<br>';echo '<hr>';// 示例二:比较字符串$str1 = 'hello';$str2 = 'hello1';echo $str1 <=> $str2,'<br>';echo $str2 <=> $str1,'<br>';// 若把两个字符串的值改为一样$str2 = 'hello';echo $str1 <=> $str2;// 从这个例子可以看书,太空船运算符不仅可以比较数值,// 也可以比较字符串,取值为0时,表示字符串的内容是一样的// 取值为1时,表示前者字符串长度大于后者// 取值为-1时,表示前者字符串长度小于后者

示例如下:
<?php// 示例:检测用户是否有密码,若无,给一个默认密码rootecho isset($password) ? $password : 'root';echo '<hr>';// 现在给一个密码$password = '666666';echo isset($password) ? $password : 'root';echo '<hr>';// 用NULL合并运算符(??)的方式写echo $password ?? 'root';

| 流程控制语句 | 描述 | 结构划分 |
|---|---|---|
if |
条件成立时执行代码 | 单分支 |
if...else |
条件成立时执行一块代码,不成立时执行另一块代码 | 双分支 |
if...elseif...else |
在若干条件之一成立时执行一个代码块 | 多分支 |
switch |
在若干条件之一成立时执行一个代码块 | 多分支 |
while |
只要指定的条件成立,则循环执行代码块 | 循环 |
do...while |
首先执行一次代码块,然后在指定的条件成立时重复这个循环 | 循环 |
for |
循环执行代码块指定的次数 | 循环 |
foreach |
根据数组中每个元素来循环代码块 | 循环 |
示例如下:
<?phperror_reporting(E_ALL);// 1. 单分支// 示例:考试平均成绩大于90分,就是优秀成绩$avg = 95;if($avg > 90){echo '成绩优秀','<hr>';}// 单分支简化:当这个流程控制语句中只有一段代码时,可省略大括号if($avg > 90) echo '成绩优秀','<hr>';// 2. 双分支// 示例:平均成绩大于85分的没有暑假作业,否则做100张复习试卷$avg = 80;if($avg > 85){echo '没有作业,好好玩把';}else{echo '做100张试卷';}echo '<hr>';// 双分支简化:// 简化方式一:使用三元运算符echo $avg > 85 ? '没有作业,好好玩吧' : '做100张试卷';echo '<hr>';// 简化方式二:使用模板语法if($avg > 85) :echo '没有作业,好好玩把';else :echo '做100张试卷';endif ;

示例如下:
<?phperror_reporting(E_ALL);/* 示例:平均成绩在90-100,为优秀平均成绩在80-90,为良好平均成绩在70-80,为中等平均成绩在60-70,为及格平均成绩在60以下,站黑板把*/// 方式一:使用if...elseif...elseif...else$avg = 68;// 代码中的 and 和 && 是一个意思,另外,or 和 || 也是一个意思if($avg >= 90 and $avg <= 100){echo '成绩优秀';}elseif($avg >= 80 and $avg < 90){echo '成绩良好';}elseif($avg >= 70 and $avg < 80){echo '成绩中等';}elseif($avg >=60 and $avg < 70){echo '及格';}else{echo '站黑板把';}echo '<hr>';// 改为模板语法if($avg >= 90 and $avg <= 100):echo '成绩优秀';elseif($avg >= 80 and $avg < 90):echo '成绩良好';elseif($avg >= 70 and $avg < 80):echo '成绩中等';elseif($avg >=60 and $avg < 70):echo '及格';else:echo '站黑板把';endif;echo '<hr>';// 方式二:使用switch简化分支switch(true){case $avg >= 90 and $avg <= 100 : echo '成绩优秀';break;case $avg >= 80 and $avg < 90 : echo '成绩良好';break;case $avg >= 70 and $avg < 80 : echo '成绩中等';break;case $avg >=60 and $avg < 70 : echo '及格';break;default : echo '站黑板把';}echo '<hr>';// 改为模板语法switch(true):case $avg >= 90 and $avg <= 100 : echo '成绩优秀';break;case $avg >= 80 and $avg < 90 : echo '成绩良好';break;case $avg >= 70 and $avg < 80 : echo '成绩中等';break;case $avg >=60 and $avg < 70 : echo '及格';break;default : echo '站黑板把';endswitch;

对于多分支结构switch,通常又是用在单值判断场景中,示例如下:
<?php$person = 8;switch($person){case 0 : echo '还没人来';break;case 1 : echo '一个人玩求';break;case 2 : echo '两个人玩象棋把';break;case 3 : echo '三个人斗地主把';break;case 4 : echo '四个人玩麻将把';break;default : echo '人太多,去K歌把';}

循环结构一般都是用于进行遍历操作的,下面以遍历一个数组为例:
<?php// 使用不同的循环结构遍历数组// 示例:自己有一个购物清单,分别有:牙刷、杯子、台灯、电脑、风扇$list = ['牙刷','杯子','台灯','电脑','风扇'];// 方式一:使用while循环,while循环属于入口判断型,先判断再执行$i = 0;while( $i < count($list) ):echo $list[$i],'<br>';$i++;endwhile;echo '<hr>';// 方式二:使用do...while循环,它是属于出口判断型,无论如何代码都要先执行一次// 注意:此种方式,不能使用模板语法,实际开发,用得也比较少$j = 0;do{echo $list[$j],'<br>';$j++;}while($j < count($list));echo '<hr>';// 方式三:使用for循环,语法:for(变量的初始值;循环的条件;更新)for( $i=0; $i<count($list); $i++):echo $list[$i],'<br>';endfor;echo '<hr>';// 在for循环中插入break或continue,可以指定终止或者跳过循环// 1.台灯以后的清单不要了for( $i=0; $i<count($list); $i++):if($i > 2) break;echo $list[$i],'<br>';endfor;echo '<hr>';// 2.电脑不要for( $i=0; $i<count($list); $i++):if($i === 3) continue;echo $list[$i],'<br>';endfor;echo '<hr>';// 方式四:使用foreachforeach($list as $value):echo $value,'<br>';endforeach;

运算符大都和小学的运算差不多,着重掌握好逻辑和三元运算,理解到太空运算符的值的意义,三元运算必须掌握好,因为它能大大的简化双分支结构。
至于多分支结构,根据不同的场景自己选择,但是遇到单值判断,还是尽量使用switch。
在进行循环遍历时,也了解到了几种方法,也是需要根据不同的场景择佳使用,在使用while和do...while时,切记一定要更新循环条件,不然会进入死循环,另外在循环中,结合break和continue语句,可以根据不同的条件使循环得到更好的控制
在写代码过程中,能够使用模板语法的,尽量使用,后期在混编中会有大量的展现
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号