Blogger Information
Blog 13
fans 0
comment 0
visits 11165
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
理解几种运算符、循环控制、分支结构和模板语法
忠于原味
Original
805 people have browsed it

一、运算符

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. ?>

效果图:

Correcting teacher:GuanhuiGuanhui

Correction status:qualified

Teacher's comments:作业写的还行,一定要按自己的想法多写几遍!
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments