博客列表 >运算操作符与流程控制

运算操作符与流程控制

溪边小树
溪边小树原创
2020年04月21日 18:30:05610浏览

运算符

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 $b` 逻辑或
3 ! !$a 逻辑非
4 xor $a xor $b 逻辑异或

6. 三元运算符

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

7. 错误屏蔽符

运算符 示例 描述 场景
@ @(10/0) 屏蔽所有运行错误 线上生产环境

示例

  1. <?php
  2. error_reporting(E_ALL);
  3. // 运算符
  4. // 取模/取余数
  5. // var_dump(15%6);
  6. // ++,--,只能用在变量上
  7. $n = 10;
  8. // ++在变量后面, 先引用变量的值, 再将变量执行加1的运算
  9. // var_dump($n++);
  10. // var_dump($n);
  11. // $n = $n + 1;
  12. // var_dump($n--);
  13. // var_dump(--$n);
  14. // var_dump($n);
  15. //. 字符串连接
  16. // echo 'a' . 'b' . '<br>';
  17. // echo 'abc' . 28 . '<br>';
  18. // $n = $n + 10;
  19. $n *= 10;
  20. // $n =$n *10;
  21. var_dump($n);
  22. // 比较运算符返回布尔类型的值
  23. var_dump(10 > 20);
  24. // 是否相等==, 是否全等===
  25. // ==: 只判断值是否相等, 不判断类型
  26. // 当==二边的类型不同时,会发生类型的自动转换
  27. // var_dump(10 == (int)'10');
  28. // === 全等, 不仅值要相等, 类型也要相等
  29. var_dump(10 === '10');
  30. echo '<hr>';
  31. // 太空船 <=>
  32. var_dump(10 <=> 20);
  33. // -1 < 0, 说明 10 小于 20
  34. var_dump(10 <=> 5);
  35. // 1 > 0, 说明 10 大于 5
  36. var_dump(10 <=> 10);
  37. // 0, 说明 相等
  38. echo '<hr>';
  39. // && 理解为乘法, true==>1, false==>0
  40. var_dump((3<4) && 5>8);
  41. // var_dump(true && false);
  42. // && 理解为加法, true==>1, false==>0
  43. var_dump((3<4) || 5>8);
  44. // var_dump(true || false);
  45. // $name = 'peter';
  46. // $name = 'admin';
  47. if (@$name && $name==='admin') {
  48. echo '欢迎您';
  49. } else {
  50. echo '未登录';
  51. }
  52. echo '<hr>';
  53. // ? : 简化双分支if
  54. $price = 900;
  55. if ($price > 1000) echo '太贵了'; else echo '真便宜';
  56. // 条件 ? true : false
  57. echo $price > 1000 ? '太贵了' : '真便宜';
  58. echo '<hr>';
  59. // ?? null合并运算符
  60. // 设置变量默认值
  61. $password = '123abc';
  62. // $password = isset($password) ? $password : 'root';
  63. $password = $password ?? 'root';
  64. echo $password;
  65. echo '<hr>';
  66. echo @$username;
  67. @(10/0);
  68. // 语法 错误是不能被屏蔽
  69. // @incle 'hello.php';

流程控制

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. <?php
  2. # 分支结构
  3. // 存款本金
  4. $Capital = 10000;
  5. // 本息合计
  6. $Interest = $Capital;
  7. //1. 单分支
  8. // if (Capital > 5000) {
  9. // $Interest = $Capital * 1.09;
  10. // }
  11. // 如果代码体只有一行,可以省略大括号
  12. // if ($Capital > 5000) $Interest = $Capital * 1.09;
  13. // 有一种替代语法 : 模板语法, 用在与html代码混编的时候
  14. // 模板语法的目标是: 干掉大括号
  15. if ($Capital > 5000) :
  16. $Interest = $Capital * 1.08;
  17. endif;
  18. echo '本息合计: ' . $Interest . '<br>';
  19. echo '<hr>';
  20. //2. 双分支
  21. $Capital = 3500;
  22. if ($Capital > 5000) {
  23. $Interest = $Capitalt * 1.08;
  24. } else {
  25. $Interest = $Capital;
  26. }
  27. // 双分支模板语法
  28. if ($Capital > 5000) :
  29. $Interest = $Capital * 1.08;
  30. else :
  31. $Interest = $Capital;
  32. endif;
  33. echo '本息合计: ' . $Interest . '<br>';
  34. echo '<hr>';
  35. // 3. 多分支
  36. $Capital = 20000;
  37. // if ($Capital > 5000 && $Capital < 10000) {
  38. // $Interest = $Capitalt * 1.08;
  39. // } elseif ($Capital >= 10000 && $Capital < 20000) {
  40. // $Interest = $Capital * 1.09;
  41. // } elseif ($Capital >= 20000) {
  42. // $Interest = $Capital * 1.1;
  43. // } else {
  44. // $Interest = $Capital;
  45. // }
  46. // 模板语法
  47. if ($Capital > 5000 && $Capital< 10000) :
  48. $Interest = $Capital * 1.08;
  49. elseif ($Capital >= 10000 && $Capital < 20000) :
  50. $Interest = $Capital * 1.09;
  51. elseif ($Capital >= 20000) :
  52. $Interest = $Capital * 1.1;
  53. else :
  54. $Interest = $Capital;
  55. endif;
  56. echo '本息合计: ' . $Interest . '<br>';
  57. echo '<hr>';
  58. // 4. switch: 简化多分支
  59. $Capital = 2000;
  60. // switch (true) {
  61. // case $Capital > 5000 && $Capital < 10000:
  62. // $Interest = $Capital * 1.08;
  63. // // break: 跳出当前分支
  64. // break;
  65. // case $Capital >= 10000 && $Capital < 20000:
  66. // $Interest = $Capital * 1.09;
  67. // break;
  68. // case $Capital >= 20000:
  69. // $Interest = $Capital * 1.1;
  70. // break;
  71. // default:
  72. // $Interest = $Capital;
  73. // }
  74. // 模板语法
  75. switch (true) :
  76. case $Capital > 5000 && $Capital < 10000:
  77. $Interest= $Capital * 1.08;
  78. // break: 跳出当前分支
  79. break;
  80. case $Capital >= 10000 && $Capital < 20000:
  81. $Interest = $Capital * 1.09;
  82. break;
  83. case $Capital >= 20000:
  84. $Interest = $Capital * 1.1;
  85. break;
  86. default:
  87. $Interest = $Capital;
  88. endswitch;
  89. echo '本息合计: ' . $Interest . '<br>';
  90. echo '<hr>';
  91. // switch 更常用的场景是单值判断
  92. $rate = 1.2;
  93. $Capital = 10000;
  94. switch ($rate):
  95. case 1.09:
  96. $Interest = $Capital* 1.09;
  97. break;
  98. case 1.08:
  99. $Interest = $Capital * 1.08;
  100. break;
  101. default:
  102. die('暂无该利率');
  103. endswitch;
  104. echo '本息合计: ' . $Interest . ', 利率: '. $rate;

  1. <?php
  2. # 循环
  3. $courses = ['HTML', 'CSS', 'PHP', 'JS', 'JQuery','Laravel'];
  4. // 1. 入口判断型
  5. echo current($courses);
  6. next($courses);
  7. echo current($courses);
  8. next($courses);
  9. echo current($courses);
  10. echo '<hr>';
  11. reset($courses);
  12. // $course = current($courses): 循环条件
  13. // while ($course = current($courses)) {
  14. // echo $course . '<br>';
  15. // // 更新循环条件, 没有这个语句, 会进入死循环
  16. // next($courses);
  17. // }
  18. // reset($courses);
  19. // 模板语法
  20. while ($course = current($courses)) :
  21. echo $course . '<br>';
  22. // 更新循环条件, 没有这个语句, 会进入死循环
  23. next($courses);
  24. endwhile;
  25. echo '<hr>';
  26. // 2. 出口判断型
  27. reset($courses);
  28. do {
  29. $course = current($courses);
  30. echo $course . '<br>';
  31. // 更新循环条件, 没有这个语句, 会进入死循环
  32. next($courses);
  33. } while ($course = current($courses));
  34. // 无论条件是否为真,至少会执行一次
  35. // 没有对应的模板语法
  36. // 3. 计数型
  37. echo '数组中有 : ' . count($courses);
  38. echo '<hr>';
  39. // $i = 0;循环变量初始化
  40. // $i < count($courses): 循环条件
  41. // $i++: 更新循环条件
  42. for ($i = 0; $i < count($courses); $i++) {
  43. // echo $courses[$i] . '<br>';
  44. }
  45. // 模板语法
  46. for ($i = 0; $i < count($courses); $i++) :
  47. // echo $courses[$i] . '<br>';
  48. endfor;
  49. echo '<hr>';
  50. reset($courses);
  51. // continue: 终止当前循环,提前进入下一轮
  52. $courses = ['HTML', 'CSS', false, 'PHP', null, 'JS', 'JQuery','Laravel'];
  53. // while ($course = current($courses)) :
  54. // echo $course . '<br>';
  55. // next($courses);
  56. // endwhile;
  57. for ($i = 0; $i < count($courses); $i++) :
  58. // 跳过空数据
  59. if (!$courses[$i]) continue;
  60. echo $courses[$i] . '<br>';
  61. // break; 跳出本层
  62. if ($courses[$i] === 'PHP') break;
  63. endfor;

课程学习小结

本次课程首先介绍了运算操作符与流程控制的相关知识,尤其是流程控制的主要结构,在后续编程中用到得较多,老师列举了很多实用案例,帮助我理解相关表达方式,以下几点需要特别注意:
1、理解各个运算符的含义,尤其是一些比较特别的,如简化双分支:$a ?: $b、太空船<=>等;
2、分支:单分支if(){...}、双分支if(){...} else {...}、多分支if(){...} elseif {...} else {...}switchswitch() {case: ... break...}及其模板语法的表达方式;
3、循环:入口判断型while(){...}、出口判断型do {...} while();、计数型for(){...}及其模板语法的表达方式;
4、循环控制关键字:continue终止本次循环,提前进入下一轮、break跳出本层循环。
通过本次课程老师详细的讲解,我对PHP基本编程语句有了更为深刻的理解,并且在老师的建议下动手做了相关实例,收获很大。

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