博客列表 >PHP运算符与流程控制知识点

PHP运算符与流程控制知识点

鸿运当头郭小胖
鸿运当头郭小胖原创
2020年04月21日 15:28:50640浏览

一、运算符

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 次方
  • $a++=>$a = $a + 1, $a--=>$a = $a - 1
  • **: 幂运算需要 php5.6+版本

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. 比较运算符

序号 运算符 示例 描述
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+
  • 比较运算符: 返回布尔值,常用于流程控制中(if/while/for...)
  • <=>: 也叫组合比较符, 例如$a <=> $b, 有三种返回结果
序号 运算 结果
1 $a > $b 返回>0的整数
2 $a < $b 返回<0的整数
3 $a = $b 返回=0的整数

5. 逻辑运算符

序号 运算符 示例 描述
1 && $a && $b 逻辑与
2 ! !$a 逻辑非
3 xor $a xor $b 逻辑异或

4 || $a || $b 逻辑或

6. 三元运算符

序号 运算符 示例 描述 场景
1 ?: $a ?: $b 仅判断表达式true/false 简化双分支
2 ?? $a ?? $b 判断变量存在且不为 null 设置默认值

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;

2. 循环结构

序号 类型 语法 模板语法
1 入口判断型 while(){...} while(): ... endwhile;
2 出口判断型 do {...} while(); do : ... while();
3 计数型 for(){...} for () : ... endfor;

循环控制关键字:

序号 关键字 描述
1 continue 终止本次循环,提前进入下一轮
2 break 跳出本层循环

三、实例代码

1、取模运算符
取模运算符(%),相当于获取两数相除而剩的余数!
e.g.

  1. <?php
  2. var_dump(18%3);
  3. echo '<br>';
  4. var_dump(16%5);
  5. echo '<br>';
  6. var_dump(9%6);
  7. echo '<br>';

输出的结果为:
取模运算
我们可以看到。18%3 输出的是int(0),16%5输出的是int(1),9%6输出的是int(3)。
那么为什么会这么显示呢?首先取模运算符是取两数相除的余数。18除以3,是可以整除的。最后余0.所以这里输出的是0.16除以5,不能被整除,3乘以5等于15,16减15等于1.那么16除以5,最后余的是1.所以这里输出的就是1.
2、字符串连接符
字符串连接符,可以将前后两个拼接(转换)成字符串进行返回。
e.g.

  1. <?php
  2. echo 'abc' . 28 . '<br>';
  3. //相当于
  4. echo 'abc' . (string)28 . '<br>';

字符串连接符含义
上面是两个字符串连接的样例,当然字符串连接符,在我们日常生产过程中也会发挥很大的作用。比如下面介绍的字符串运算符 .=
e.g.

  1. <?php
  2. $user = ['110', '李磊', '100','111','韩梅梅','99'];
  3. $table = '<table border="1">';
  4. $table .= '<tr>';
  5. $table .='<td>'.'学号' . '</td>';
  6. $table .= '<td>'.'姓名' . '</td>';
  7. $table .= '<td>'.'分数' . '</td>';
  8. $table .= '</tr>';
  9. $table .= '<tr>';
  10. $table .='<td>'.$user[0] . '</td>';
  11. $table .= '<td>'.$user[1] . '</td>';
  12. $table .= '<td>'.$user[2] . '</td>';
  13. $table .= '</tr>';
  14. $table .= '<tr>';
  15. $table .='<td>'.$user[3] . '</td>';
  16. $table .= '<td>'.$user[4] . '</td>';
  17. $table .= '<td>'.$user[5] . '</td>';
  18. $table .= '</tr>';
  19. $table .= '</table>';
  20. echo $table;
  21. echo '<hr>';

字符串运算符

3、逻辑运算符
逻辑运算符 中的 && 相当于 python 中的 and|| 相当于 python 中的 or
&&需满足前后两值,才会返回true。
||只需满足前后任意一值即可返回true。

  1. <?php
  2. $name = 'peter';
  3. if ($name && $name==='admin') {
  4. echo '欢迎您';
  5. } else {
  6. echo '未登录';
  7. }
  8. echo '<hr>';

逻辑运算符1
示例中,显示未登录,是因为单纯满足$name,但不满住$name===’admin’。

  1. <?php
  2. $name = 'admin';
  3. if (@$name && $name==='admin') {
  4. echo '欢迎您';
  5. } else {
  6. echo '未登录';
  7. }
  8. echo '<hr>';

逻辑运算符2
两值都满足,所以返回欢迎您。

  1. <?php
  2. $name = 'peter';
  3. if ($name || $name==='admin') {
  4. echo '欢迎您';
  5. } else {
  6. echo '未登录';
  7. }
  8. echo '<hr>';

逻辑运算3
从代码中看出使用了||,所以只要满足其中一个条件就可以获得欢迎您的提示信息。
4、三元运算符
三元运算符,就是简化了分支结构(if esle)。
e.g.$$

  1. <?php
  2. $student1 =['name'=> '李磊','class'=>'三班','grade'=>90];
  3. $student2 =['name'=> '韩梅梅','class'=>'三班','grade'=>50];
  4. $var = $student1['grade'] >= $student2['grade'] && $student1['grade'] >= 60 && $student2['grade'] >= 60 ? $student1['name'] . '是' .$student1['class'] .'第一名'.',并且三班全都及格了!' :$student2['class'] .'有人未及格,实在太遗憾了!';
  5. echo $var . '<hr>';

三元运算符
5、switch判断

  1. <?php
  2. error_reporting(E_ALL);
  3. //定义购物车状态
  4. $paystatus = 1;
  5. //定义支付金额
  6. $amount = 8000;
  7. //定义用户等级
  8. $usergrade = 9;
  9. //判断用户等级
  10. //如果购物车状态是真
  11. if ($paystatus === 1) :
  12. switch ($usergrade) :
  13. case 1 :
  14. $payment = $amount * 0.9;
  15. break;
  16. case 2 :
  17. $payment = $amount * 0.8;
  18. break;
  19. case 3 :
  20. $payment = $amount * 0.7;
  21. break;
  22. case 4 :
  23. $payment = $amount * 0.6;
  24. break;
  25. default:
  26. $payment = $amount;
  27. endswitch;
  28. //判断购物车状态为假
  29. else :
  30. echo '抱歉,您的购物车中没有东西,请添加后在进行购买';
  31. endif;
  32. switch ($usergrade) :
  33. case 1 :
  34. $usergroup = '普通会员';
  35. break;
  36. case 2 :
  37. $usergroup = '青铜会员';
  38. break;
  39. case 3 :
  40. $usergroup = '黄金会员';
  41. break;
  42. case 4 :
  43. $usergroup = '铂金会员';
  44. break;
  45. default:
  46. $usergroup = '您还不是我们的会员';
  47. endswitch;
  48. echo $usergrade >=1 &&$usergrade <=4 && $paystatus === 1 ?'您购物车中的物品价值为'.$amount.'但是由于您是我们的'.$usergroup.'您只需要支付'.$payment.'即可!':'由于您还不是我们的会员所以请您注册后再进行支付或您的购物车中可能没有物品,请添加后再进行购买';

switch判断

6、入口及出口循环

  1. <?php
  2. $cities = ['长春', '哈尔滨', '沈阳', '大连', '通化'];
  3. // 1. 入口判断型
  4. while ($city = current($cities)) :
  5. echo $city . '<br>';
  6. // 更新循环条件, 没有这个语句, 会进入死循环
  7. next($cities);
  8. endwhile;
  9. echo '<hr>';
  10. // 2. 出口判断型
  11. reset($cities);
  12. do {
  13. $city = current($cities);
  14. echo $city . '<br>';
  15. // 更新循环条件, 没有这个语句, 会进入死循环
  16. next($cities);
  17. } while ($city = current($cities));
  18. // 无论条件是否为真,至少会执行一次
  19. // 没有对应的模板语法


7、for循环

  1. <?php
  2. //创建今晚要吃的东西
  3. $foods = ['龙虾', '鲍鱼', '海参', '螃蟹', '牛排', '咖喱鸡', '小肥羊'];
  4. echo '那么今晚可以吃什么呢?'.'<br>';
  5. for ($i = 0; $i < count($foods); $i++) :
  6. echo $foods[$i].'<br>';
  7. endfor;
  8. echo '说说你想吃的东西!';

总结

今日学习了关于php的运算符和流程控制的知识点。运算符中需要注意区分 逻辑或与非与python中的区别。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议