博客列表 >PHP分支与循环

PHP分支与循环

邱世家的博客
邱世家的博客原创
2020年07月07日 18:38:18772浏览

分支:

  • 以下代码都是用模板语法写的
  1. <?php
  2. // 单分支(if):if(条件表达式){条件语句,当为单条的时候,可以省略大括号}
  3. // 当条件表达式为true时 执行条件语句,反之不执行
  4. $age = 25;
  5. if($age > 20 && $age < 30){
  6. echo '复合条件,执行。下面一行是简写','<hr>';
  7. }
  8. $age = 20;
  9. if ($age > 20 && $age < 30) echo '不符合条件,所以不执行';
  10. // 双分支(else从句 ):if(条件表达式){条件语句}else{条件语句}
  11. // 当条件表达式为true时 执行条件语句,当为false时 执行else中的条件语句
  12. $size = 27;
  13. if ($size >=27) :
  14. echo '27寸是我喜欢的最小尺寸';
  15. else :
  16. echo '屏幕尺寸太小了';
  17. endif;
  18. echo '<br>';
  19. $size = 19;
  20. if ($size >=27) :
  21. echo '27寸是我喜欢的显示尺寸';
  22. else :
  23. echo '屏幕尺寸太小了';
  24. endif;
  25. echo '<hr>';
  26. //三元运算符 简化 ? :
  27. $size = 19;
  28. echo $size >= 27 ? '27寸是我喜欢的显示尺寸':'屏幕尺寸太小了';
  29. echo '<hr>';
  30. // 多分支(elseif子句):必须右默认分支else(){}
  31. //if(条件表达式1){条件语句1}elseif(条件表达式2){条件语句2}...elseif(条件语句n){条件语句n}else(条件表达式){默认条件语句}
  32. $performance = 50;
  33. if ($performance >=60 && $performance <80) :
  34. echo '良';
  35. elseif ($performance >=80 && $performance <= 90) :
  36. echo '优';
  37. elseif ($performance === 100) :
  38. echo '完美';
  39. else :
  40. $performance < 60 ;
  41. echo '要加油了','<br>';
  42. endif;
  43. /*工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。
  44. 将表达式的值与结构中每个 case 的值进行比较。
  45. 如果存在匹配,则执行与 case 关联的代码。代码执行后,
  46. 使用 break 来阻止代码跳入下一个 case 中继续执行。
  47. default 语句用于不存在匹配(即没有 case 为真)时执行。
  48. switch (n)
  49. {
  50. case label1(代表条件语句1):
  51. 如果 n=label1,此处代码将执行;
  52. break;
  53. case label2(代表条件语句2):
  54. 如果 n=label2,此处代码将执行;
  55. break;
  56. default:
  57. 如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
  58. }
  59. */
  60. // 用switch语句来简化 多分支:
  61. $performance = 100;
  62. switch($performance):
  63. case $performance >=60 && $performance <80 :
  64. echo '良';
  65. break;
  66. case $performance >=80 && $performance <90 :
  67. echo '优';
  68. break;
  69. case $performance === 100 :
  70. echo '完美';
  71. break;
  72. default :
  73. echo '要加油了';
  74. endswitch;
  75. echo '<br>';
  76. // switch 通常用在单值判断中。
  77. $colour = 'red';
  78. switch($colour) :
  79. case $colour === 'red':
  80. echo '喜欢红色';
  81. break;
  82. case $colour === 'green':
  83. echo '喜欢绿色';
  84. break;
  85. case $colour === 'black':
  86. echo '喜欢黑色';
  87. break;
  88. default:
  89. echo '你喜欢的颜色不是红 绿 黑';
  90. endswitch;

循环

  1. <?php
  2. /*
  3. for 循环
  4. 语法:
  5. for (初始值; 条件; 增量)
  6. {
  7. 要执行的代码;
  8. }
  9. 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
  10. 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
  11. 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
  12. 上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
  13. */
  14. // 遍历数组 首选要知道有多少个元素
  15. // 1.for循环方式--只能用于纯索引数组
  16. $mountains = ['恒山','嵩山','衡山','华山','泰山'];
  17. // 数组长度 count()
  18. echo count($mountains),'<hr>';
  19. for ($i = 0; $i < count($mountains); $i++) :
  20. echo $mountains[$i],'<br>';
  21. endfor;
  22. echo '<hr>';
  23. for ($i = 0; $i < count($mountains); $i++) :
  24. // 输出拦截, break 提前终止循环
  25. if ($i > 1) break;
  26. echo $mountains[$i],'<br>';
  27. endfor;
  28. echo '<hr>';
  29. for ($i = 0; $i < count($mountains); $i++) :
  30. // 有选择性输出,跳过一部分元素continu
  31. if ($i === 3) continue;
  32. echo $mountains[$i],'<br>';
  33. endfor;
  34. echo '<hr>';
  35. // 判断型 循环: 1.入口判断型while(条件为真){执行的代码}
  36. // current(): 获取当前数组元素的值,
  37. echo current($mountains),'<hr>';
  38. while ($mountain = current($mountains)) :
  39. echo $mountain,'<br>';
  40. //next(): 当前数组指针下移
  41. next($mountains);
  42. endwhile;
  43. echo '<hr>';
  44. // 2.出口判断型do {条件语句} while(条件) 无论条件是否为true,都会先执行一遍
  45. //do{} while 没有对应的模板语法 也不常用
  46. // 指针复位
  47. reset($mountains);
  48. do {
  49. echo $mountain,'<br>';
  50. //next(): 当前数组指针下移
  51. next($mountains);
  52. } while ($mountain = current($mountains));
  53. // 输出结果少了恒山,因为第一次输出$mountain时 并没有值 ,

运算符

  • 比较运算符(返回布尔值):
    “==”和”===”区别
    “==”:值比较,当操作符两边的操作类型不一致,会触发类型自动转换机制
    “===” 除了值相等,类型也必须一致。
  • 太空船运算符:<=>,
    第一个数比第二个数大返回正数1,比第二个小返回负数-1,相等 返回0
  1. //返回int(-1)
  2. var_dump(10 <=> 20);
  3. //返回int(1)
  4. var_dump(10 <=> 5);
  5. //返回int(0)
  6. var_dump(10 <=> 10);
  • 逻辑运算符:也返回布尔值
  1. // && :两边表达式,除非全部为true,否则返回false
  2. var_dump((10 > 20) && (5 > 8));
  3. // ||:两边表达式只要有一个为true,则返回true
  4. var_dump((10 < 20) || (5 > 8));
  5. var_dump(true || false);
  • 三元运算符语法:
    条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。可以用来简化双分支

  • 短路求值

    1. // 如果第一个表达式(isset($username)),为false,则直接执行 else 分支,不会再去计算$username === 'admin'
    2. if ( isset($username) && $username === 'admin')
    3. echo '欢迎您';
    4. else
    5. echo '未登录先登录','<hr>';
  • ??: null合并运算符
  1. // 用户名:root, 不设置密码 默认密码就是root
  2. $password = sha1('123456');
  3. echo isset($password) ? $password : 'root';
  4. echo "<hr>";
  5. // isset() + 三元运算 = 变量默认值
  6. $password = '123456';
  7. unset($password);
  8. // ?? 代替isset()
  9. echo $password ?? 'root';

总结;初步认识PHP分支和循环以及预算符,总有种云里雾里的感觉。

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