博客列表 >操作运算符及流程控制与for() while()循环--PHP中文网线上班0417

操作运算符及流程控制与for() while()循环--PHP中文网线上班0417

高的PHP十期培训学习笔记
高的PHP十期培训学习笔记原创
2020年05月21日 14:14:21757浏览

1. 赋值运算符

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

2. 比较运算符

序号 运算符 示例 描述
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. // 太空船 <=>
  2. var_dump(10 <=> 20);
  3. // -1 < 0, 说明 10 小于 20
  4. var_dump(10 <=> 5);
  5. // 1 > 0, 说明 10 大于 5
  6. var_dump(10 <=> 10);
  7. // 0, 说明 相等

3. 逻辑运算符

4. 三元运算符

序号 运算符 示例 描述 场景
1 ?: $a ?: $b 仅判断表达式true/false 简化双分支
2 ?? $a ?? $b 判断变量存在且不为 null 设置默认值
  1. // ? : 简化双分支if
  2. $price = 900;
  3. if ($price > 1000) echo '太贵了'; else echo '真便宜';
  4. // 条件 ? true : false
  5. echo $price > 1000 ? '太贵了' : '真便宜';
  6. echo '<hr>';
  7. // ?? null合并运算符
  8. // 设置变量默认值
  9. $password = '123abc';
  10. // 相同于 $password = isset($password) ? $password : 'root';
  11. $password = $password ?? 'root';
  12. echo $password;

流程控制

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. // 拼团人数打折价格
  2. // 单分支
  3. // 团购人数
  4. $renshu = 5;
  5. //实际价格
  6. $shijijiage = 2000;
  7. if ($renshu > 3) {
  8. $shijijiage *= 0.9;
  9. }
  10. echo '实际支付: ' . $shijijiage . '<br>';
  11. echo '<hr>';
  12. // 单分支模板语法
  13. $shijijiage = 2000;
  14. if ($renshu > 3) : $shijijiage *= 0.9; endif;
  15. echo '实际支付: ' . $shijijiage . '<br>';
  16. echo '<hr>';
  17. // 双分支
  18. $shijijiage = 2000;
  19. if ($renshu > 3) {
  20. $shijijiage *= 0.9;
  21. } else {
  22. $shijijiage = $shijijiage;
  23. }
  24. echo '实际支付: ' . $shijijiage . '<br>';
  25. echo '<hr>';
  26. // 双分支模板语法
  27. $renshu = 2;
  28. $shijijiage = 2000;
  29. if ($renshu > 3) :
  30. $shijijiage *= 0.9;
  31. else :
  32. $shijijiage = $shijijiage;
  33. endif;
  34. echo '实际支付: ' . $shijijiage . '<br>';
  35. echo '<hr>';
  36. // 多分支
  37. $renshu = 6;
  38. $shijijiage = 2000;
  39. if ($renshu > 5 && $renshu < 10) {
  40. $shijijiage *= 0.9;
  41. } elseif ($renshu >= 10 && $renshu < 20) {
  42. $shijijiage *= 0.8;
  43. } elseif ($renshu >= 20) {
  44. $shijijiage *= 0.7;
  45. } else {
  46. $shijijiage = $shijijiage;
  47. }
  48. echo '实际支付: ' . $shijijiage . '<br>';
  49. echo '<hr>';
  50. // 多分支模板语法
  51. $renshu = 55;
  52. $shijijiage = 2000;
  53. if ($renshu > 5 && $renshu < 10) :
  54. $shijijiage *= 0.9;
  55. elseif ($renshu >= 10 && $renshu < 20) :
  56. $shijijiage *= 0.8;
  57. elseif ($renshu >= 20) :
  58. $shijijiage *= 0.7;
  59. else :
  60. $shijijiage = $shijijiage;
  61. endif;
  62. echo '实际支付: ' . $shijijiage . '<br>';
  63. echo '<hr>';
  64. // switch: 简化多分支
  65. $renshu = 12;
  66. $shijijiage = 2000;
  67. switch (true) {
  68. case $renshu > 5 && $renshu < 10:
  69. $shijijiage *= 0.9;
  70. break;
  71. case $renshu >= 10 && $renshu < 20:
  72. $shijijiage *= 0.8;
  73. break;
  74. case $renshu >= 20:
  75. $shijijiage *= 0.7;
  76. break;
  77. default:
  78. $shijijiage = $shijijiage;
  79. }
  80. echo '实际支付: ' . $shijijiage . '<br>';
  81. echo '<hr>';
  82. // switch模板语法
  83. $renshu = 12;
  84. $shijijiage = 2000;
  85. switch (true) :
  86. case $renshu > 5 && $renshu < 10:
  87. $shijijiage *= 0.9;
  88. break;
  89. case $renshu >= 10 && $renshu < 20:
  90. $shijijiage *= 0.8;
  91. break;
  92. case $renshu >= 20:
  93. $shijijiage *= 0.7;
  94. break;
  95. default:
  96. $shijijiage = $shijijiage;
  97. endswitch;
  98. echo '实际支付: ' . $shijijiage . '<br>';
  99. echo '<hr>';
  100. // switch 更常用的场景是单值判断
  101. $renshu = 12;
  102. $shijijiage = 2000;
  103. $zhekou = 0.7;
  104. switch ($zhekou) :
  105. case 0.9:
  106. $shijijiage *= 0.9;
  107. break;
  108. case 0.8:
  109. $shijijiage *= 0.8;
  110. break;
  111. case 0.7:
  112. $shijijiage *= 0.7;
  113. break;
  114. default:
  115. $shijijiage = $shijijiage;
  116. endswitch;
  117. echo '实际支付: ' . $shijijiage . '折扣率:' . $zhekou .'<br>';
  118. echo '<hr>';

PHP循环

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

current():获取数组当前值
reset():重置数组指针
count(): 计算数组元素的数量
strlen(): 计算字符串长度
trim(), rtrim(), ltrim(): 是从字符串二边,右边, 左边删除指定的字符,默认删除的是空格
mt_rand(min, max): 产生指定范围的随机数

count()判断数组元素个数
strlen()判断字符串长度

  1. $cities = ['武汉', '合肥', '南京', '杭州', '上海'];
  2. //while循环
  3. // $city = current($cities): 循环条件
  4. // while ($city = current($cities)) {
  5. // echo $city . '<br>';
  6. // // 更新循环条件, 没有这个语句, 会进入死循环
  7. // next($cities);
  8. // }
  9. // reset($cities);
  10. // 模板语法
  11. while ($city = current($cities)) :
  12. echo $city . '<br>';
  13. // 更新循环条件, 没有这个语句, 会进入死循环
  14. next($cities);
  15. endwhile;
  • for(): 计数式循环
    for(循环变量的初始化; 循环条件; 更新循环条件) {…}
  1. // 3. 计数型
  2. echo '数组中有 : ' . count($cities);
  3. // $i = 0;循环变量初始化
  4. // $i < count($cities): 循环条件
  5. // $i++: 更新循环条件
  6. for ($i = 0; $i < count($cities); $i++) {
  7. // echo $cities[$i] . '<br>';
  8. }
  9. // 模板语法
  10. for ($i = 0; $i < count($cities); $i++) :
  11. // echo $cities[$i] . '<br>';
  12. endfor;
  • for()循环遍历 关联数组
    next()向后移动,同时会获得当前数组元素的值
    prev()向前移动,同时会获得当前数组元素的值
    end()移动到最后一个数组元素,并获得它的值
    reset()移动到第一个数组元素,并获得它的值
    key()获得当前数组指针指向的数组元素的键名
    current()获得当前数组指针指向的数组元素的值

  • 循环控制关键字:

序号 关键字 描述
1 continue 终止本次循环,提前进入下一轮
2 break 跳出本层循环
  • continue break使用方法:
  1. for ($i = 0; $i < count($cities); $i++) :
  2. // 跳过空数据
  3. if (!$cities[$i]) continue;
  4. echo $cities[$i] . '<br>';
  5. // break; 跳出本层
  6. if ($cities[$i] === '杭州') break;
  7. endfor;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议