博客列表 >PHP运算符和流程控制

PHP运算符和流程控制

赵大叔
赵大叔原创
2020年04月18日 15:59:52592浏览

一、代码运行演示地址

二、一些难记住但常用的运算符

1. 算术运算符

序号 运算符 示例 描述
1 % $a%$b $a与$b 的余(模)
2 ++ $a++/++$a 先用再加/先加再用
3 -- $a--/--$a 先用再减/先减再用
4 ** 2**4 幂运算:2 的 4 次方
  • $a++=>$a = $a + 1, $a--=>$a = $a - 1
  • **: 幂运算需要 php5.6+版本

2. 赋值运算符

序号 运算符 示例 描述
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';

3. 比较运算符

序号 运算符 示例 描述
1 == $a == $b 等于 (值相等即可)
2 === $a == $b 全等于(二边值与类型全等)
3 != $a != $b 不相等
4 !== $a !== $b 不全等
5 <=> $a <=> $b 太空船php7+
  • 比较运算符: 返回布尔值,常用于流程控制中(if/while/for...)
  • <=>: 也叫组合比较符, 例如$a <=> $b, 有三种返回结果

4. 逻辑运算符

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

5. 三元运算符

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

6. 错误屏蔽符

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

运算符代码:

  1. <?php
  2. // 运算符
  3. // 取余数
  4. var_dump(10%3);
  5. echo '<hr>';
  6. // ++,--,只能用在变量上, 先引用变量的值, 再将变量执行+1或-1的运算
  7. $a = 88;
  8. var_dump($a);
  9. $a++;
  10. var_dump($a);
  11. echo '<hr>';
  12. $b = 66;
  13. $b--;
  14. var_dump($b);
  15. $b = 66;
  16. --$b;
  17. var_dump($b);
  18. echo '<hr>';
  19. // 比较运算符返回布尔类型的值
  20. // 太空船 <=>
  21. var_dump(66 <=> 88);
  22. // -1 < 0, 说明 10 小于 20
  23. var_dump(88 <=> 66);
  24. // 1 > 0, 说明 10 大于 5
  25. var_dump(66 <=> 66);
  26. // 0, 说明 相等
  27. echo '<hr>';
  28. // && 且,同时符合
  29. var_dump((66<88) && 88>66);
  30. // || 或,其中一个符合
  31. var_dump((66<88) || 66>88);
  32. echo '<hr>';
  33. // 三元运算符
  34. // 条件 ? true : false
  35. $age = 26;
  36. echo $age > 18 ? '成年了' : '小屁孩';
  37. echo '<hr>';
  38. // ?? null合并运算符
  39. // 设置变量默认值
  40. $password;
  41. // $password = isset($password) ? $password : 'root';
  42. $password = $password ?? 'root';
  43. echo $password;
  44. echo '<hr>';
  45. // @: 屏蔽所有运行错误
  46. echo @$username;
  47. @(10/0);
  48. // 语法 错误是不能被屏蔽
  49. //@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;

分支代码:

  1. <?php
  2. // 分支
  3. // 1.单分支
  4. $salary = 800;
  5. if($salary < 1000){
  6. echo '建议走路,锻炼身体。<br>';
  7. }
  8. // 简写
  9. if($salary < 1000) echo '建议走路,锻炼身体。<br>';
  10. // 模板语法
  11. if($salary < 1000):
  12. echo '建议走路,锻炼身体。<br>';
  13. endif;
  14. echo '<hr>';
  15. // 2.双分支
  16. $salary = 2000;
  17. if($salary < 1000){
  18. echo '建议走路,锻炼身体。<br>';
  19. } else {
  20. echo '可以不用走路了。<br>';
  21. }
  22. // 模板语法
  23. if($salary < 1000):
  24. echo '建议走路,锻炼身体。<br>';
  25. else :
  26. echo '可以不用走路了。<br>';
  27. endif;
  28. echo '<hr>';
  29. // 3.多分支
  30. $salary = 9000;
  31. if ($salary >= 1000 && $salary < 3000) {
  32. echo '电动自行车,告别城市拥堵。<br>';
  33. } elseif ($salary >= 3000 && $salary < 5000) {
  34. echo '高档电动车,将拥堵的车流甩在身后。<br>';
  35. } elseif ($salary >= 5000 && $salary < 8000) {
  36. echo '入手入门级6万左右车型,成为有车一族。<br>';
  37. } elseif ($salary >= 8000) {
  38. echo '10万以上车型。<br>';
  39. } else {
  40. echo '还是老老实实走路,锻炼身体吧。<br>';
  41. }
  42. // 模板语法
  43. if ($salary >= 1000 && $salary < 3000) :
  44. echo '电动自行车,告别城市拥堵。<br>';
  45. elseif ($salary >= 3000 && $salary < 5000) :
  46. echo '高档电动车,将拥堵的车流甩在身后。<br>';
  47. elseif ($salary >= 5000 && $salary < 8000) :
  48. echo '入手入门级6万左右车型,成为有车一族。<br>';
  49. elseif ($salary >= 8000) :
  50. echo '10万以上车型。<br>';
  51. else :
  52. echo '还是老老实实走路,锻炼身体吧。<br>';
  53. endif;
  54. echo '<hr>';
  55. // 4.多分支简化'switch'
  56. $salary = 6000;
  57. switch (true) {
  58. case $salary >= 1000 && $salary < 3000:
  59. echo '电动自行车,告别城市拥堵。<br>';
  60. break;
  61. case $salary >= 3000 && $salary < 5000:
  62. echo '高档电动车,将拥堵的车流甩在身后。<br>';
  63. break;
  64. case $salary >= 5000 && $salary < 8000:
  65. echo '入手入门级6万左右车型,成为有车一族。<br>';
  66. break;
  67. case $salary >= 8000:
  68. echo '10万以上车型。<br>';
  69. break;
  70. default:
  71. echo '还是老老实实走路,锻炼身体吧。<br>';
  72. }
  73. // 模板语法
  74. $salary = 6000;
  75. switch (true) :
  76. case $salary >= 1000 && $salary < 3000:
  77. echo '电动自行车,告别城市拥堵。<br>';
  78. break;
  79. case $salary >= 3000 && $salary < 5000:
  80. echo '高档电动车,将拥堵的车流甩在身后。<br>';
  81. break;
  82. case $salary >= 5000 && $salary < 8000:
  83. echo '入手入门级6万左右车型,成为有车一族。<br>';
  84. break;
  85. case $salary >= 8000:
  86. echo '10万以上车型。<br>';
  87. break;
  88. default:
  89. echo '还是老老实实走路,锻炼身体吧。<br>';
  90. endswitch;
  91. echo '<hr>';
  92. // switch单值判断
  93. $live= '';
  94. $salary = 6000;
  95. switch ($salary) :
  96. case 4000:
  97. $live = '养活自己.';
  98. break;
  99. case 6000:
  100. $live = '有点存款.';
  101. break;
  102. case 10000:
  103. $live = '找个女朋友.';
  104. break;
  105. case 12000:
  106. $live = '买辆车.';
  107. break;
  108. default:
  109. $live = '未定义.';
  110. endswitch;
  111. echo $live;
  112. echo '<hr>';

代码演示效果:


2. 循环结构

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

循环控制关键字:

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

循环代码:

  1. <?php
  2. // 循环
  3. $country = ['CHN', 'US', 'AS', 'VN', 'CANADA'];
  4. // current():当前数组指针
  5. // next():下移
  6. // reset():重置
  7. // count():计数
  8. // for:计数型
  9. for($i = 0; $i < count($country); $i++) {
  10. echo $country[$i] . '<br>';
  11. next( $country);
  12. }
  13. echo '<hr>';
  14. // 模板语法
  15. for($i = 0; $i < count($country); $i++) :
  16. echo $country[$i] . '<br>';
  17. next( $country);
  18. endfor;
  19. echo '<hr>';
  20. // break: 跳出循环
  21. $country = ['CHN', 'US', 'AS', 'VN', 'CANADA'];
  22. for($i = 0; $i < count($country); $i++) :
  23. echo $country[$i] . '<br>';
  24. next( $country);
  25. if ($country[$i] === 'AS') break;
  26. endfor;
  27. echo '<hr>';
  28. // continue : 终止本次循环,提前进入下一轮
  29. $country = ['CHN', false, '', 'US', 'AS', null, 'VN', 'CANADA'];
  30. for($i = 0; $i < count($country); $i++) :
  31. if (!$country[$i]) continue;
  32. echo $country[$i] . '<br>';
  33. next( $country);
  34. endfor;
  35. echo '<hr>';
  36. // while:入口判断型
  37. $country = ['CHN', 'US', 'AS', 'VN', 'CANADA'];
  38. $i = 0;
  39. while ($i < count($country)) :
  40. echo $country[$i] . '<br>';
  41. // 更新循环条件, 没有这个语句, 会进入死循环
  42. next($country);
  43. $i++;
  44. endwhile;
  45. echo '<hr>';
  46. // do {...} while():出口判断型
  47. reset($country);
  48. $i = 0;
  49. do {
  50. echo $country[$i] . '<br>';
  51. // 更新循环条件, 没有这个语句, 会进入死循环
  52. next($country);
  53. $i++;
  54. } while ($i > count($country));

代码演示效果:

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