Blogger Information
Blog 9
fans 0
comment 0
visits 6874
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php运算符和流程控制讲解
移动用户-1144300
Original
511 people have browsed it

运算符

  1. <?php
  2. // 注意写的时候符号不能在中文时输入符号会报错
  3. // 取模:取余数
  4. echo 10 % 3;
  5. echo '<hr>';
  6. // 自加
  7. $i = 1 ;
  8. echo $i,'<br>';
  9. // 在++放后面那一部还是原来的值
  10. // 在下一次调用才是自加过后的值
  11. echo $i++,'<br>';
  12. echo $i,'<br>';
  13. // ++放前面那一部结果直接就是加一后的值
  14. // --同理
  15. echo ++$i,'<br>';
  16. echo $i++,'<br>';
  17. echo $i,'<br>';
  18. echo '<hr>';
  19. // --
  20. $q=10;
  21. echo $q,'<br>';
  22. echo $q--,'<br>';
  23. echo $q,'<br>';
  24. echo --$q,'<br>';
  25. echo $q,'<br>';
  26. echo '<hr>';
  27. // 幂运算**: 幂运算需要 `php5.6+`版本
  28. $w=2; $e=5;
  29. echo $w * $e;
  30. echo '<hr>';
  31. // .是将左右两边的内容不管是不是字符串都会强制转换成字符串
  32. // ,不会这样做会让内容以原本的数据返回
  33. echo '大家好'.'我是xxx';
  34. echo '大家好','我是xxx';
  35. echo '<hr>';
  36. // 赋值运算符
  37. $i=2;
  38. $i=$i+1;
  39. echo $i ,'<br>';
  40. // 简写
  41. // $i +=1;
  42. echo $i ,'<br>';
  43. // 其他同理
  44. echo '<hr>';
  45. // 将内容添加到$i的后面
  46. $i .=20;
  47. echo $i ,'<br>';
  48. echo '<hr>';
  49. // ==表示值相等。也不要求类是否相等
  50. // ===表示全等。要求值和类型一样
  51. if(2=='5') echo '相等';else echo '不相等';
  52. echo '<br>';
  53. if(5=='5') echo '相等';else echo '不相等';
  54. echo '<br>';
  55. // ===表示全等。要求值和类型一样
  56. if(5==='5') echo '相等';else echo '不相等';
  57. echo '<br>';
  58. if('5'==='5') echo '相等';else echo '不相等';
  59. echo '<hr>';
  60. // 不相等!=
  61. $i=2;
  62. echo $i != 2 ?'不相等':'相等','<br>';
  63. // 不全等!==
  64. echo $i !== '2' ?'不全等':'全等';
  65. echo '<hr>';
  66. // 太空船比较符<=> :需要7.0及以上版本支持
  67. // `<=>`: 也叫组合比较符, 例如`c`, 有三种返回结果
  68. $i = 11;$p = 12;
  69. echo $i <=> $p ,'<br>';
  70. var_dump(10 <=> 20);
  71. $i = 11;$p = 12;
  72. // 运用循环在不同情况下输出a、b、c。
  73. if(($i<=>$p)>0):
  74. echo 'a';
  75. elseif(($i<=>$p)<0):
  76. echo 'b';
  77. else:
  78. echo 'c';
  79. endif;
  80. echo '<hr>';
  81. // 逻辑运算符
  82. // 1、&&:与的意思可以理解为乘法算式
  83. // true=1 false=0
  84. $i=2;$p=2;$w=4;
  85. // flase * flase = flase
  86. // 最终输出是假,及下面设定的不满足
  87. // $i>$p && $i>$w
  88. // ? '正确' :'错误'
  89. echo $i>$p && $i>$w ?'满足':'不满足','<br>';
  90. $i=5;$p=2;$w=4;
  91. // true * true = true
  92. echo $i>$p && $i>$w ?'满足':'不满足','<br>';
  93. var_dump($i>$p && $i>$w);
  94. echo '<br>';
  95. // 在var_dump($i>$p && $i>$w)后面加无用
  96. var_dump($i>$p && $i>$w) ?'满足':'不满足';
  97. echo '<hr>';
  98. // 2、|| :或的意思。可以理解为加法
  99. // true=1 false=0
  100. // 这里不可以用单独一个=
  101. // 单独一个等号表示给变量赋值
  102. // 是否相等用== 是否全等用===
  103. $i=1;$p=2;$w=4;
  104. echo $i<$p || $i>$w ?'最少有一个满足':'两个都不满足','<br>';
  105. echo $i>$p||$i==$w ?'最少有一个满足':'两个都不满足';
  106. echo '<hr>';
  107. // 3、!非的意思 :意思是取反 得到的是true取成false
  108. // 得到false取成true
  109. $q=false;
  110. if($q) echo '取反成功';else echo '取反失败','<br>';
  111. if(!$q) echo '取反成功';else echo '取反失败';
  112. echo '<hr>';
  113. // 三元运算符
  114. // 1、 ? :简化双分支if 仅判断表达式
  115. // 简单来说 ? 后面跟满足条件后要输出的内容
  116. // :后面跟不满足条件后要输出的内容
  117. echo 1>2 ? '正确':'错误','<br>';
  118. echo 1<2 ? '正确':'错误';
  119. echo '<hr>';
  120. // 2、 ?? 合并运算符,设置默认值。 判断变量存在且不为null
  121. // 首先判定变量是否存在然后判定是不是null。不存在或为null就输出 : 后面的内容
  122. // 存在且值不是null就输出
  123. $t='name';
  124. $t = isset($t) ? $t :'root';
  125. echo $t,'<br>';
  126. // 用 ?? 简化代码达到相同的效果
  127. // $t=null;
  128. $t=111;
  129. $t = $t ??'dwa';
  130. echo $t;
  131. echo '<hr>';
  132. // @ 错误屏蔽符:屏蔽所有运行错误
  133. echo $y ?'错误屏蔽成功':'错误屏蔽失败';
  134. echo '<hr>';
  135. // $y=1;
  136. // 这个好像判定不是按是否屏蔽成功 而是按照$y是true还是false
  137. // $y未定义所以是false
  138. echo @$y ?'错误屏蔽失败':'错误屏蔽成功';
  139. echo '<hr>';
  140. (10/0);
  141. @(10/0);

流程结构

1.分支结构

  1. <?php
  2. echo '<h1>'.'流程控制'.'</h1>';
  3. echo '<h2>'.'1、分支结构'.'</h2>';
  4. // 分支结构
  5. // 1、单分支 if(){...}
  6. // 进货 售价
  7. $i=100;$p=200;
  8. if($i<$p){
  9. $p=$p*0.9;
  10. echo $p,'<br>';
  11. }
  12. echo $p;
  13. echo '<hr>';
  14. // 单分支模板语法
  15. // 如果代码体只有一行,可以省略大括号
  16. // 进货 售价
  17. $i=100;$p=200;
  18. if($i<$p) $p=$p*0.9; echo $p,'<br>';
  19. // 有一种替代语法 : 模板语法, 用在与html代码混编的时候
  20. // 模板语法的目标是: 干掉大括号
  21. $i=100;$p=200;
  22. if($i<$p):
  23. $p=$p*0.9;
  24. echo $p,'<br>';
  25. endif;
  26. echo '<hr>';
  27. // 双分支 if(){...}
  28. // 进货 售价
  29. $i=100;$p=200;
  30. if($p-$i>=100){
  31. $p=$p*0.9;
  32. echo '打折购买'.$p,'<br>';
  33. }else{
  34. echo '售价购买'.$p;
  35. }
  36. $i=100;$p=150;
  37. if($p-$i>=100){
  38. $p=$p*0.9;
  39. echo $p,'<br>';
  40. }else{
  41. echo '售价购买'.$p;
  42. }
  43. echo '<hr>';
  44. // 双分支模板语法
  45. // 注意如果代码体只有一行,可以省略大括号。指的是没有else这样的转折
  46. // 但是如果代码是多行的或不能单纯省略大括号那样会报错。要按模板语法写
  47. $i=100;$p=200;
  48. if($p-$i>=100):
  49. $p=$p*0.9;
  50. echo '打折购买'.$p,'<br>';
  51. else:
  52. echo '售价购买'.$p;
  53. endif;
  54. $i=100;$p=150;
  55. if($p-$i>=100):
  56. $p=$p*0.9;
  57. echo $p,'<br>';
  58. else:
  59. echo '售价购买'.$p;
  60. endif;
  61. echo '<hr>';
  62. // 多行分支 if(){...}elseif(){...}elseif(){...}···else{...}
  63. // 当然最后一个else要不要都可以用elseif也是一样的效果但是最好是用else这样方便阅读和保持过完整
  64. // 同事假设要所有大于进价的折扣都设置完了,要是低于进价大话直接用else就包括了。用elseif还要写范围麻烦
  65. // 所以要以els结尾
  66. $i=1000;$p=11211;
  67. if($p>$i && $p-$i>100 && $p<2000){
  68. $p=$p*0.9;
  69. echo '九折购买'.$p,'<br>';
  70. }elseif( $p>=2000 && $p<20000){
  71. $p *=0.7;
  72. echo '七折购买'.$p,'<br>';
  73. }elseif($p >= 20000){
  74. $p *= 0.5;
  75. echo '五折购买'.$p,'<br>';
  76. }else{
  77. echo '原价购买'.$p,'<br>';
  78. }
  79. echo '<hr>';
  80. // 模板语法
  81. $i=1000;$p=11211;
  82. if($p>$i && $p-$i>100 && $p<2000):
  83. $p=$p*0.9;
  84. echo '九折购买'.$p,'<br>';
  85. elseif( $p>=2000 && $p<20000):
  86. $p *=0.7;
  87. echo '七折购买'.$p,'<br>';
  88. elseif($p >= 20000):
  89. $p *= 0.5;
  90. echo '五折购买'.$p,'<br>';
  91. else:
  92. echo '原价购买'.$p,'<br>';
  93. endif;
  94. echo '<hr>';
  95. // 4. switch: 简化多分支c swith(){case():...break;····}
  96. $i=100;$p=1;
  97. // switch(true){
  98. // case $p>=100 && $p<1000:
  99. // $p *= 0.9;echo $p,'<br>';
  100. // // 跳出本层循环进入下一层
  101. // break;
  102. // case $p>=1000 :
  103. // $p *= 0.8;echo $p,'<br>';
  104. // // 跳出本层循环进入下一层
  105. // break;
  106. // default:
  107. // echo '不支持的折扣率11','<br>';
  108. // // die()只有第一个可以输出
  109. // die('不支持的折扣率');
  110. // die('不支持的折扣率2');
  111. // }
  112. echo '<hr>';
  113. // 模板语法
  114. $i=100;$p=200;
  115. switch(true):
  116. case $p>=100 && $p<1000:
  117. $p *= 0.9;echo $p,'<br>';
  118. // 跳出本层循环进入下一层
  119. break;
  120. case $p>=1000 :
  121. $p *= 0.8;echo $p,'<br>';
  122. // 跳出本层循环进入下一层
  123. break;
  124. default:
  125. echo '不支持的折扣率11','<br>';
  126. // die()只有第一个可以输出
  127. die('不支持的折扣率');
  128. die('不支持的折扣率2');
  129. endswitch;
  130. echo '<hr>';
  131. // switch 更常用的场景是单值判断
  132. $i=1000;$p=10000;
  133. if($p>$i && $p-$i>100 && $p<2000):
  134. $w=0.9;
  135. echo '九折购买','<br>';
  136. elseif( $p>=2000 && $p<20000):
  137. $w=0.7;
  138. echo '七折购买','<br>';
  139. elseif($p >= 20000):
  140. $w= 0.5;
  141. echo '五折购买','<br>';
  142. else:
  143. echo '原价购买','<br>';
  144. endif;
  145. switch($w):
  146. case 0.8:
  147. $p*=0.8;
  148. break;
  149. case 0.9:
  150. $p*=0.9;
  151. break;
  152. case 0.6:
  153. $p*=0.6;
  154. break;
  155. case 0.7:
  156. $p*=0.7;
  157. break;
  158. default:
  159. die('不打折');
  160. endswitch;
  161. echo $p;

2.循环结构

  1. <?php
  2. echo '<h1>'.'流程控制'.'</h1>';
  3. echo '<h2>'.'2、循环结构'.'</h2>';
  4. // 循环结构
  5. // 1、入口判断型 while(循环条件){...}
  6. $a = ['a','b','c','d'];
  7. // 获取数组当前值 current()
  8. // 获取数组的下一个内容 next()
  9. // 重置数组reset()
  10. current($a);
  11. echo current($a),'<br>';
  12. echo next($a),'<br>';
  13. echo current($a),'<br>';
  14. reset($a);
  15. echo current($a),'<br>';
  16. // $i = current($a)这个是循环条件
  17. // while($i = current($a)){
  18. // echo $i,'<br>';
  19. // // 更新循环条件,没有这个语句会陷入死循环
  20. // next($a);
  21. // }
  22. echo '<hr>';
  23. // 模板语法
  24. while($i = current($a)):
  25. echo $i,'<br>';
  26. // 更新循环条件,没有这个语句会陷入死循环
  27. next($a);
  28. endwhile;
  29. echo '<hr>';
  30. // 出口判断型
  31. // 重置数组
  32. reset($a);
  33. do{
  34. $i=current($a);
  35. echo $i,'<br>';
  36. next($a);
  37. }while($i=current($a));
  38. echo '<hr>';
  39. // 无论条件是否为真,至少会执行一次
  40. // 没有对应的模板语法
  41. // 计数型 for(){...}
  42. echo count($a),'<br>';
  43. $i=$a;
  44. for($w=0;$w < count($a);$w++){
  45. // 可以直接用数组即将$i换成数组$a
  46. echo $i[$w],'<br>';
  47. }
  48. // continue终止本次循环提前进入下一轮循环
  49. $b=['你好','我好','大家好','全都好'];
  50. while($i=current($b)):
  51. echo $i,'<br>';
  52. next($b);
  53. endwhile;
  54. for($q=0;$q<count($b);$q++):
  55. echo $b[$q],'<br>';
  56. endfor;
  57. echo '<hr>';
  58. $c=['你好','我好','大家好',false,'全都好'];
  59. // 注意再次强调
  60. // 单分支简化写法就是直接去掉大括号就行了 if() ... ;
  61. // 单行分支的模板写法 if():....endif;
  62. for($q=0;$q<count($c);$q++):
  63. if(!$c[$q]): continue;
  64. endif;
  65. echo $c[$q],'<br>';
  66. endfor;
  67. echo '<hr>';
  68. reset($c);
  69. for($q=0;$q<count($c);$q++):
  70. if(!$c[$q]) continue;
  71. echo $c[$q],'<br>';
  72. endfor;
  73. reset($c);
  74. while($i=current($c)):
  75. echo $i,'<br>';
  76. next($c);
  77. endwhile;
  78. // while对数值依赖性太强了
  79. echo '<hr>';
  80. reset($c);
  81. for($q=0;$q<count($c);$q++):
  82. if(!$c[$q]) continue;
  83. echo $c[$q],'<br>';
  84. // 我能力有限只能做到你好我好
  85. // break当是双层循环是脱离当前层,当只有一次时直接结束
  86. if($c[$q]==='我好') break;
  87. 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