博客列表 >理解几种运算符、循环控制、分支结构和模板语法

理解几种运算符、循环控制、分支结构和模板语法

忠于原味
忠于原味原创
2020年07月08日 18:34:56807浏览

一、运算符

1、比较运算(比较运算返回布尔值)

运算符 描述
> 条件成立返回 true,不成立则返回 false;
== 值比较,当操作符二边的操作数类型不一致,会触发类型自动转换机制
=== 除了值相等, 类型也必须一致

实例:

  1. <?php
  2. // 比较运算返回布尔值
  3. var_dump(10 > 20);//括号内条件成立返回true,不成立则返回false;
  4. echo '<hr>';
  5. // "==", "==="
  6. // "==": 值比较,当操作符二边的操作数类型不一致,会触发类型自动转换机制
  7. var_dump(100 == '100');
  8. echo '<hr>';
  9. // "===":除了值相等, 类型也必须一致
  10. var_dump(100 === '100');
  11. ?>

效果图:


2、太空船运算符(第一个数大于第二个数返回 1,小于返回-1,等于返回 0)

实例:

  1. <?php
  2. // 太空船运算符,第一个数大于第二个数返回1,小于返回-1,等于返回0;
  3. var_dump(10 <=> 20);
  4. echo '<hr>';
  5. var_dump(10 <=> 5);
  6. echo '<hr>';
  7. var_dump(10 <=> 10);
  8. echo '<hr>';
  9. ?>

效果图:


3、逻辑运算符

运算符 描述
&& 二边表达式除非全部为 true,否则返回 false
// 二边表达式只要有一个为 true,则返回 true

实例:

  1. <?php
  2. // 逻辑运算符
  3. // &&:二边表达式除非全部为true,否则返回false
  4. var_dump((10 > 20) && (5 > 8));
  5. echo '<hr>';
  6. // ||: 二边表达式只要有一个为true,则返回true
  7. var_dump((10 < 20) || (5 > 8));
  8. echo '<hr>';
  9. var_dump(true || false);
  10. ?>

效果图:


4、短路求值

  1. <?php
  2. // 短路求值
  3. // 如果第一个表达式(isset($username)) 为false, 则直接执行else分支,不会再去计算" $username === 'admin'"
  4. $username = 'peter';
  5. if ($username && $username === 'admin')
  6. echo '欢迎您';
  7. else
  8. echo '您未登录,请先登录';
  9. echo '<hr>';
  10. ?>

效果图:

5、三元运算符(三元: 是指有三个表达式, 意味要有二个操作符)

  1. <?php
  2. // 三元运算符
  3. $price = 2000;
  4. if ($price > 1500) echo '太贵了';
  5. else echo '太便宜了';
  6. echo '<hr>';
  7. // 用三元运算符来简单双分支
  8. // 三元: 是指有三个表达式, 意味要有二个操作符
  9. $price = 1000;
  10. //如果 $price > 1500 成立 结果为:太贵了
  11. //如果 $price > 1500 不成立 结果为:太便宜了
  12. echo $price > 1500 ? '太贵了' : '太便宜了';
  13. echo '<hr>';
  14. // root, 密码:默认就是 root
  15. //sha1()加密,sha1('123456')将123456加密,现不要深究
  16. $password = sha1('123456');
  17. echo isset($password) ? $password : 'root';
  18. // isset() + 三元运算 = 变量默认值
  19. echo '<hr>';
  20. // $password = '123456';
  21. //删除$password
  22. unset($password);
  23. echo $password ?? 'root';
  24. // ?? : null合并运算符
  25. ?>

效果图:


二、分支结构和模板语法

大家根据自己的习惯使不使用模板语法都可以。
1. 单分支

实例:

  1. <?php
  2. // 1. 单分支
  3. $amount = 6000;
  4. // 实际支付的金额,默认值是不打折的金额
  5. $payment = $amount;
  6. if ($amount >= 5000) {
  7. //当流程控制语句中只有一行代码的时候,可以省略大括号
  8. $payment = $amount * 0.8;
  9. }
  10. echo '实际支付: ' , $payment , '<br>';
  11. echo '<hr>';
  12. //当流程控制语句中只有一行代码的时候,可以省略大括号
  13. if ($amount >= 5000) $payment = $amount * 0.7;
  14. echo '实际支付: ' , $payment , '<br>';
  15. echo '<hr>';
  16. // 模板语法: 就是干掉流程控制中的大括号
  17. // 将起始大括号用冒号代替,将结束大括号用特殊关键字代替
  18. if ($amount >= 5000) :
  19. $payment = $amount * 0.9;
  20. endif;
  21. //当流程控制语句中只有一行代码的时候,可以省略大括号
  22. if ($amount >= 5000) : $payment = $amount * 0.9; endif;
  23. echo '实际支付: ' , $payment , '<br>';
  24. echo '<hr>';
  25. ?>

效果图:


2. 双分支

实例:

  1. <?php
  2. //2. 双分支
  3. $amount = 4500;
  4. if ($amount >= 5000) {
  5. // 当流程控制语句中只有一行代码的时候,可以省略大括号
  6. $payment = $amount * 0.9;
  7. } else {
  8. $payment = $amount;
  9. }
  10. echo '实际支付: ' , $payment , '<br>';
  11. echo '<hr>';
  12. // 模板语法
  13. $amount = 7500;
  14. if ($amount >= 5000) :
  15. $payment = $amount * 0.9;
  16. else :
  17. $payment = $amount;
  18. endif;
  19. echo '实际支付: ' , $payment , '<br>';
  20. echo '<hr>';
  21. ?>

效果图:


3. 多分支
实例:

  1. <?php
  2. // 3. 多分支
  3. $amount = 22500;
  4. /* 判断变量$amount是否大于5000且小于10000,是的话则执行内部语句,不是
  5. 则跳到下一步elseif再判断,以此类推*/
  6. if ($amount > 5000 && $amount < 10000) {
  7. $payment = $amount * 0.9;
  8. } elseif ($amount >= 10000 && $amount < 20000) {
  9. $payment = $amount * 0.7;
  10. } elseif ($amount >= 20000) {
  11. $payment = $amount * 0.5;
  12. } else {
  13. // 默认值
  14. $payment = $amount;
  15. }
  16. echo '实际支付: ' , $payment , '<br>';
  17. echo '<hr>';
  18. // 模板语法
  19. if ($amount > 5000 && $amount < 10000):
  20. $payment = $amount * 0.9;
  21. elseif ($amount >= 10000 && $amount < 20000) :
  22. $payment = $amount * 0.7;
  23. elseif ($amount >= 20000) :
  24. $payment = $amount * 0.5;
  25. else :
  26. // 默认值
  27. $payment = $amount;
  28. endif;
  29. echo '实际支付: ' , $payment , '<br>';
  30. echo '<hr>';
  31. ?>

效果图:


4、switch: 用来简化多分支

基本流程:

  1. switch (表达式) {
  2. case 条件1:
  3. 分支语句...
  4. break;//跳出整个循环
  5. case 条件3:...
  6. 分支语句...
  7. break;//
  8. default:
  9. ....
  10. }

实例:

  1. <?php
  2. // 4. switch: 用来简化多分支
  3. // switch:通常用在单值判断中
  4. $discount = 0.8;
  5. $amount = 1400;
  6. switch ($discount) {
  7. case 0.7:
  8. $payment = $amount * 0.7;
  9. break;
  10. case 0.8:
  11. $payment = $amount * 0.8;
  12. break;
  13. case 0.9:
  14. $payment = $amount * 0.9;
  15. break;
  16. default:
  17. //die() 函数输出一条消息,并退出当前脚本。
  18. die('不支持的折扣率');
  19. }
  20. echo '1.实际支付: ' , $payment , '<br>';
  21. echo '<hr>';
  22. // 模板语法
  23. $discount = 0.9;
  24. $amount = 1500;
  25. switch ($discount) :
  26. case 0.7:
  27. $payment = $amount * 0.7;
  28. break;
  29. case 0.8:
  30. $payment = $amount * 0.8;
  31. break;
  32. case 0.9:
  33. $payment = $amount * 0.9;
  34. break;
  35. default:
  36. die('不支持的折扣率');
  37. endswitch;
  38. echo '2.实际支付: ' , $payment , '<br>';
  39. echo '<hr>';
  40. ?>

效果图:


三、循环控制和模板语法

1. 判断型循环

实例:

  1. <?php
  2. //创建一个数组并赋值
  3. $cities = ['合肥', '南京', '杭州', '苏州', '上海'];
  4. // 1. 判断型循环: 入口判断型 while(条件) {...}
  5. // 进入循环代码之前进行判断,只有条件为真才执行循环体
  6. while ($city = current($cities)) {
  7. echo $city, '<br>';
  8. // next() 函数将内部指针指向数组中的下一个元素,并输出。
  9. next($cities);
  10. }
  11. echo '<br>';
  12. //数组指针复位,重新指向第一个
  13. reset($cities);
  14. // 模板语法
  15. while ($city = current($cities)) :
  16. echo $city, '<br>';
  17. next($cities);
  18. endwhile;
  19. ?>

效果图:

2. 判断型循环

  1. <?php
  2. error_reporting(E_ALL);
  3. //current() 函数返回数组中的当前元素的值。
  4. //创建一个数组并赋值
  5. $cities = ['合肥', '南京', '杭州', '苏州', '上海'];
  6. // 2. 判断型循环: 出口判断型 do {...} while(条件)
  7. do {
  8. //即使报错也也要执行一遍
  9. echo $city, '<br>';
  10. //循环体内必须要有更新循环条件的语句,否则进入死循环,
  11. next($cities);
  12. } while ($city = current($cities));
  13. // do - while 没有对应的模板语法
  14. ?>

效果图:


3. 计数型循环

  1. <?php
  2. error_reporting(E_ALL);
  3. //创建一个数组并赋值
  4. $cities = ['合肥', '南京', '杭州', '苏州', '上海'];
  5. // 3. 计数型循环: for (循环变量的初始化; 循环条件; 更新循环条件){....}
  6. // 遍历数组
  7. //count() 函数返回数组中元素的数目。
  8. echo count($cities);
  9. echo '<br>';
  10. //$i:数组元素的索引,默认从0开始
  11. for ($i = 0; $i < count($cities); $i++) {
  12. echo $cities[$i], '<br>';
  13. }
  14. echo '<br>模板语法: <br><br>';
  15. // 模板语法
  16. //break 语句的作用都是终止循环
  17. //continue 语句的作用是跳出本次循环,接着执行下一次循环
  18. for ($i = 0; $i < count($cities); $i++) :
  19. // 输出拦截, break: 提前终止循环
  20. // if ($i > 2) break;
  21. // 有选择性的输出, 跳过一部分元素
  22. if ($i === 3 || $i === 2) continue;
  23. echo $cities[$i], '<br>';
  24. endfor;
  25. ?>

效果图:

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