博客列表 >PHP运算符、分支、循环详解

PHP运算符、分支、循环详解

lilove的博客
lilove的博客原创
2020年07月08日 15:26:28685浏览

运算符

  • 比较: == === !==

  • 太空船(组合比较): <=>

  • 逻辑: && ||

  • 三元:? :

  • null合并: ??

示例:

  1. <?php
  2. // 1.比较运算符“==”,“===”,“!==”
  3. $age = 10;
  4. $years = 18;
  5. // 使用比较要用“==”或“===”,“=”是赋值
  6. var_dump($age == $years);
  7. var_dump($age === $years);
  8. // 非运算符
  9. var_dump($age !== $years);
  10. echo '<hr>';
  11. if ($age === $years) {
  12. echo '完全相等';
  13. } else {
  14. echo '不完全相等';
  15. }
  16. echo '<hr>';
  17. // 操作类型不一致的值用“==”做比较时两边的值会自动转换
  18. var_dump(18 == '18');
  19. var_dump(18 == 18);
  20. // 用“===”做比较时两边的值类型也必须一致
  21. var_dump(18 === '18');
  22. var_dump(18 === 18);
  23. echo '<hr>';
  24. // 2.太空船运算符(组合比较):“<=>”,返回结果为-1,0,1
  25. var_dump(18 <=> 28);
  26. var_dump(18 <=> 18);
  27. var_dump(18 <=> 10);
  28. echo '<hr>';
  29. // 3.逻辑运算符:“&&”,“||”
  30. $name = 20;
  31. // 必须全部满足才返回true,如果有个条件为false,就不会计算后面的条件了,叫做短路求值
  32. if ($name > 20 && $name < 30) {
  33. echo '成立';
  34. } else {
  35. echo '不成立';
  36. }
  37. // 只要满足其中一个条件即返回true
  38. if ($name > 10 || $name < 20) {
  39. echo '成立';
  40. } else {
  41. echo '不成立';
  42. }
  43. echo '<hr>';
  44. // 4.三元运算符:“? :”
  45. var_dump($name > 10 && $name !== 20 ? '成立' : '不成立');
  46. echo '<hr>';
  47. // 合并运算:“??”
  48. // $pwd = '135642';
  49. if (isset($pwd)) {
  50. echo sha1($pwd);
  51. } else {
  52. echo '密码错误';
  53. }
  54. echo '<hr>';
  55. // 下面的代码表示如果$pwd不存在则输出'密码错误'
  56. echo $pwd ?? '密码错误';

运行结果


分支

  • 单分支示例:
  1. // 1.单分支
  2. // 当流程控制语句中只有一行代码时,可以省略大括号
  3. $age = 60;
  4. if ($age >= 58) {
  5. echo '老年人';
  6. }
  7. // 可以写成
  8. if ($age >= 58) echo '老年人';
  9. // 还可以用模板语法写成(模板语法中用“:和end标志”代表大括号):
  10. if ($age >= 58) :
  11. echo '老年人';
  12. endif;
  • 双分支示例:
  1. // 2.双分支
  2. if ($age !== 60) {
  3. echo '还不是老年人呢';
  4. } else {
  5. echo '年龄' . $age . '岁了';
  6. }
  7. // 模板语法来写:
  8. if ($age !== 60) :
  9. echo '还不是老年人呢';
  10. else :
  11. echo '年龄' . $age . '岁了';
  12. endif;
  • 多分支示例:
  1. // 3.多分支
  2. if ($age >= 1 && $age < 20) {
  3. echo '年轻人';
  4. } elseif ($age >= 20 && $age < 40) {
  5. echo '青年人';
  6. } elseif ($age >=40 && $age < 60) {
  7. echo '中年人';
  8. } elseif ($age >=60 && $age < 80) {
  9. echo '老年人';
  10. } else {
  11. echo '外星人';
  12. }
  13. // 用模版语法来写:
  14. if ($age >= 1 && $age < 20) :
  15. echo '年轻人';
  16. elseif ($age >= 20 && $age < 40) :
  17. echo '青年人';
  18. elseif ($age >=40 && $age < 60) :
  19. echo '中年人';
  20. elseif ($age >=60 && $age < 80) :
  21. echo '老年人';
  22. else :
  23. echo '外星人';
  24. endif;
  • 简化多分支示例:
  1. // 还可以用switch简化来写(通常用于单值判断):
  2. switch ($age) {
  3. case $age >= 1 && $age < 20 :
  4. echo '年轻人';
  5. break;
  6. case $age >= 20 && $age < 40 :
  7. echo '青年人';
  8. break;
  9. case $age >= 40 && $age < 60 :
  10. echo '中年人';
  11. break;
  12. case $age >= 60 && $age < 80 :
  13. echo '老年人';
  14. break;
  15. default : '外星人';
  16. die('不是人');
  17. }
  18. // 模板语法:
  19. switch ($age) :
  20. case $age >= 1 && $age < 20 :
  21. echo '年轻人';
  22. break;
  23. case $age >= 20 && $age < 40 :
  24. echo '青年人';
  25. break;
  26. case $age >= 40 && $age < 60 :
  27. echo '中年人';
  28. break;
  29. case $age >= 60 && $age < 80 :
  30. echo '老年人';
  31. break;
  32. default : '外星人';
  33. die('不是人');
  34. endswitch;

循环

  • while:入口判断循环 while(条件){...}

  • do while:出口判断循环 do{...}while(条件),没有模板语法

  • for:计数循环 for(循环变量初始化, 循环条件, 更新循环条件){...}

示例:

  1. <?php
  2. // 模拟一个数组
  3. $data = ['name' => '小明', '年龄' => 18, '性别' => '男'];
  4. // 1.入口判断循环:while(条件){...},循环开始之前先判断条件,为真才执行
  5. // current()输出数组中当前元素的值,不会移动指针
  6. // next()将指针下移一位
  7. while ($database = current($data)) {
  8. echo $database . ',';
  9. next($data);
  10. }
  11. echo '<br>';
  12. // 此时指针已被调至末尾,要重置指针用reset()
  13. reset($data);
  14. // 模板语法
  15. while ($database = current($data)) :
  16. echo $database . ',';
  17. next($data);
  18. endwhile;
  19. echo '<hr>';
  20. reset($data);
  21. // 2.出口判断循环:do{...}while(条件),没有模板语法
  22. do {
  23. echo $database . ',';
  24. next($data);
  25. }
  26. while (
  27. $database = current($data)
  28. );
  29. echo '<hr>';
  30. // 3.计数循环:for(循环变量初始化, 循环条件, 更新循环条件){...}
  31. // count()计算数组中的单元数目,或对象中的属性个数
  32. $array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  33. // 数组遍历
  34. // for ($i = 0; $i < count($array); $i++) {
  35. // echo $array[$i] . '<br>';
  36. // }
  37. echo '<hr>';
  38. for ($i = 0; $i < count($array); $i++) {
  39. // 中断,输出1-6,7不会输出
  40. // if ($i === 6) break;
  41. // 跳过元素3、5,输出其他的元素
  42. if ($i === 4 || $i === 2) continue;
  43. echo $array[$i] . '<br>';
  44. }

总结

  1. 模板语法在渲染前端页面时使用;
  2. 本章常用函数:isset(),unset(),sha1(),current(),next(),reset(),count();
  3. 太空船运算符和Null合并运算符,7.0版本以上php才支持;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议