Blogger Information
Blog 19
fans 0
comment 0
visits 16171
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础知识之运算符和流程控制
῀℡῀ᵒᵐᵍᵎᵎᵎ
Original
640 people have browsed it

1.PHP运算符

  • 算术运算符 + - * / % 加,减,乘,除,取余
    1. <?php
    2. // 运算符
    3. // 取模/取余数
    4. var_dump(15%6);
    5. // ++,--,只能用在变量上
    6. $n = 10;
    7. // ++在变量后面, 先引用变量的值, 再将变量执行加1的运算
    8. // var_dump($n++);
    9. // var_dump($n);
    10. // $n = $n + 1;
    11. // var_dump($n--);
    12. // var_dump(--$n);
    13. // var_dump($n);
    14. //. 字符串连接
    15. // echo 'a' . 'b' . '<br>';
    16. // echo 'abc' . 28 . '<br>';
    17. // $n = $n + 10;
    18. $n *= 10;
    19. // $n =$n *10;
    20. var_dump($n);
  • 赋值运算符 “ = “, “&”
  • “ = “ :把右边的值赋值给左边,他将右边表达式的值赋值一份交给左边变量,左边的运算数申请了一块内存,然后把赋值的值放到这个内存里
  • “&”:引用赋值,意味着两个变量都指向同一个数据,两个变量共享一块内存,如果这个内存存储的数据发生变化,那么两个变量的值都会发生变化。
    1. <?php
    2. $a = "我在学习PHP!";
    3. $b = &$a;
    4. $a = "我学习PHP!"; // 改变变量a的值
    5. $c = &$a;
    6. echo $b."<br />";
    7. echo $c."<br />";
    8. //变量 $b 和 $c都是一样指向$a的内存

    PHP中的比较运算符

  • == 返回布尔值
  • === 全等,值相等并且类型也相等,返回True
  • != 不等 如果两边不等,返回True
  • <> 不等 如果两边不等,返回True
  • !== 非全等 只要是值或者类型不等就返回True
  • >
  • <
  • <=
  • >=
  1. <?php
  2. // 比较运算符返回布尔类型的值
  3. var_dump(10 > 20);
  4. // 是否相等==, 是否全等===
  5. // ==: 只判断值是否相等, 不判断类型
  6. // 当==二边的类型不同时,会发生类型的自动转换
  7. // var_dump(10 == (int)'10');
  8. // === 全等, 不仅值要相等, 类型也要相等
  9. var_dump(10 === '10');
  10. echo '<hr>';
  11. // 太空船 <=>
  12. var_dump(10 <=> 20);
  13. // -1 < 0, 说明 10 小于 20
  14. var_dump(10 <=> 5);
  15. // 1 > 0, 说明 10 大于 5
  16. var_dump(10 <=> 10);
  17. // 0, 说明 相等
  18. echo '<hr>';
  19. // && 理解为乘法, true==>1, false==>0
  20. var_dump((3<4) && 5>8);
  21. // var_dump(true && false);
  22. // && 理解为加法, true==>1, false==>0
  23. var_dump((3<4) || 5>8);
  24. // var_dump(true || false);
  25. // $name = 'peter';
  26. // $name = 'admin';
  27. if (@$name && $name==='admin') {
  28. echo '欢迎您';
  29. } else {
  30. echo '未登录';
  31. }
  32. echo '<hr>';
  33. // ? : 简化双分支if
  34. $price = 900;
  35. if ($price > 1000) echo '太贵了'; else echo '真便宜';
  36. // 条件 ? true : false
  37. echo $price > 1000 ? '太贵了' : '真便宜';
  38. echo '<hr>';
  39. // ?? null合并运算符

2.php流程控制

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;

2.代码演示

  1. // 单分支语法
  2. $age=17;
  3. if ($age<18) {
  4. echo '未满十八岁未成年你是一个小屁孩';
  5. }
  6. //模板写法
  7. $age=17;
  8. if ($age<18) :
  9. echo '未满十八岁未成年你是一个小屁孩';
  10. endif;
  11. // 双分支语法
  12. $age=24;
  13. if ($age<18) {
  14. echo '未满十八岁未成年你是一个小屁孩';
  15. } else {
  16. echo '您已满十八岁符合标准';
  17. }
  18. //模板写法
  19. $age=24;
  20. if ($age<18) :
  21. echo '未满十八岁未成年你是一个小屁孩';
  22. else :
  23. echo '您已满十八岁符合标准';
  24. endif;
  25. //多分支语法
  26. if ($age<18) {
  27. echo '未满十八岁你是一个小屁孩';
  28. } elseif ($age>60) {
  29. echo '超过六十岁你是老头';
  30. } elseif ($age>100) {
  31. echo '可能已经挂了';
  32. }else {
  33. echo '花样年华';
  34. }
  35. //模板语法
  36. if ($age<18) :
  37. echo '未满十八岁你是一个小屁孩';
  38. elseif ($age>60) :
  39. echo '超过六十岁你是老头';
  40. elseif ($age>100) :
  41. echo '可能已经挂了';
  42. else :
  43. echo '花样年华';
  44. endif;
  45. / 4. switch: 简化多分支
  46. $amount = 2300;
  47. // switch (true) {
  48. // case $amount > 5000 && $amount < 10000:
  49. // $payment = $amount * 0.9;
  50. // // break: 跳出当前分支
  51. // break;
  52. // case $amount >= 10000 && $amount < 20000:
  53. // $payment = $amount * 0.7;
  54. // break;
  55. // case $amount >= 20000:
  56. // $payment = $amount * 0.5;
  57. // break;
  58. // default:
  59. // $payment = $amount;
  60. // }
  61. // 模板语法
  62. switch (true) :
  63. case $amount > 5000 && $amount < 10000:
  64. $payment = $amount * 0.9;
  65. // break: 跳出当前分支
  66. break;
  67. case $amount >= 10000 && $amount < 20000:
  68. $payment = $amount * 0.7;
  69. break;
  70. case $amount >= 20000:
  71. $payment = $amount * 0.5;
  72. break;
  73. default:
  74. $payment = $amount;
  75. endswitch;
  76. echo '实际支付: ' . $payment . '<br>';
  77. echo '<hr>';
  78. // switch 更常用的场景是单值判断
  79. $discount = 0.6;
  80. $amount = 10000;
  81. switch ($discount):
  82. case 0.9:
  83. $payment = $amount * 0.9;
  84. break;
  85. case 0.8:
  86. $payment = $amount * 0.8;
  87. break;
  88. default:
  89. die('不支持的折扣率');
  90. endswitch;
  91. echo '实际支付: ' . $payment . ', 折扣率: '. $discount;

2. 循环结构

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

循环控制关键字:

序号 关键字 描述
1 continue 终止本次循环,提前进入下一轮
2 break 跳出本层循环

2.1代码演示

  1. <?php
  2. # 循环
  3. $curriculum = ['语文', '数学', '英语', '地理', '历史'];
  4. // 1. 入口判断型
  5. echo current($curriculum);
  6. next($curriculum);
  7. echo current($curriculum);
  8. next($curriculum);
  9. echo current($curriculum);
  10. echo '<hr>';
  11. reset($curriculum);
  12. // $subject = current($curriculum): 循环条件
  13. // while ($subject = current($curriculum)) {
  14. // echo $subject . '<br>';
  15. // // 更新循环条件, 没有这个语句, 会进入死循环
  16. // next($curriculum);
  17. // }
  18. // reset($curriculum);
  19. // 模板语法
  20. while ($subject = current($curriculum)) :
  21. echo $subject . '<br>';
  22. // 更新循环条件, 没有这个语句, 会进入死循环
  23. next($curriculum);
  24. endwhile;
  25. echo '<hr>';
  26. // 2. 出口判断型
  27. reset($curriculum);
  28. do {
  29. $subject = current($curriculum);
  30. echo $subject . '<br>';
  31. // 更新循环条件, 没有这个语句, 会进入死循环
  32. next($curriculum);
  33. } while ($subject = current($curriculum));
  34. // 无论条件是否为真,至少会执行一次
  35. // 没有对应的模板语法
  36. // 3. 计数型
  37. echo '数组中有 : ' . count($curriculum);
  38. echo '<hr>';
  39. // $i = 0;循环变量初始化
  40. // $i < count($curriculum): 循环条件
  41. // $i++: 更新循环条件
  42. for ($i = 0; $i < count($curriculum); $i++) {
  43. // echo $curriculum[$i] . '<br>';
  44. }
  45. // 模板语法
  46. for ($i = 0; $i < count($curriculum); $i++) :
  47. // echo $curriculum[$i] . '<br>';
  48. endfor;
  49. echo '<hr>';
  50. reset($curriculum);
  51. // continue: 终止当前循环,提前进入下一轮
  52. $curriculum = ['语文', '数学', false, '英语', null, '地理', '历史'];
  53. // while ($subject = current($curriculum)) :
  54. // echo $subject . '<br>';
  55. // next($curriculum);
  56. // endwhile;
  57. for ($i = 0; $i < count($curriculum); $i++) :
  58. // 跳过空数据
  59. if (!$curriculum[$i]) continue;
  60. echo $curriculum[$i] . '<br>';
  61. // break; 跳出本层
  62. if ($curriculum[$i] === '地理') break;
  63. endfor;

课后总结:

运算符和流程控制看似不起眼,但是在实际操作中,如果在逻辑层次不清晰的情况下,操作起来就知道锅儿是铁打的

Correcting teacher:天蓬老师天蓬老师

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
Author's latest blog post