Blogger Information
Blog 52
fans 0
comment 3
visits 42387
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php学习第三章 预算符与流程控制 循环
王小飞
Original
650 people have browsed it
  1. //运算符
  2. //取模/取余数运算符
  3. var_dump(15%6);
  4. echo '<hr>';
  5. // 递增递减 ++,--,只能用在变量上 var_dump(10++);是错误的
  6. $n = 10;
  7. // ++在变量后面, 先引用变量的值, 再将变量执行加1的运算
  8. var_dump($n++);
  9. var_dump($n);
  10. echo '<hr>';
  11. //.字符转链接
  12. echo 'a' . 'b' . '<br>';
  13. //不是字符串会自动转换
  14. echo 'abc' . 28 . '<br>';
  15. echo '<hr>';
  16. //赋值
  17. // $n = $n + 10;此用法是老用法 下方是运算符用法
  18. $n += 10;
  19. var_dump($n);
  20. echo '<hr>';
  21. //.=字符串拼接 通过下面代码学习html在php中写法
  22. $user = ['110', '朱老师', 'PHP'];
  23. $table .= '<table border="1">';
  24. $table .= '<tr>';
  25. $table .='<td>'.$user[0] . '</td>';
  26. $table .= '<td>'.$user[1] . '</td>';
  27. $table .= '<td>'.$user[2] . '</td>';
  28. $table .= '</tr>';
  29. $table .= '</table>';
  30. echo $table;
  31. echo '<hr>';
  32. //比较运算符,返回布尔值
  33. var_dump(10 > 20);
  34. // ==判断是否相等 返回10和字符串10相等 ===判断是否全等 返回不相等 ''这个里面的内容时字符串
  35. // ==只判断值是否相等, 不判断类型 会发生自动类型转换 建议使用全等===
  36. var_dump(10 == '10');
  37. var_dump(10 === '10');
  38. echo '<hr>';
  39. // 太空船 <=> 只返回三种返回值 -1 0 和 1 小于返回-1 等于返回0 大于返回1
  40. var_dump(10 <=> 20);
  41. var_dump(10 <=> 5);
  42. var_dump(10 <=> 10);
  43. echo '<hr>';
  44. //逻辑运算符 &两边都是运算符 &理解为乘法 ||理解为加法
  45. var_dump((3<4) && 5>8);
  46. var_dump(true && false);
  47. var_dump(true || false);
  48. echo '<hr>';
  49. // if是如果 else是否则 &&理解为是 if后面@$name是判断是否存在$name 存在后再判断是否全等 ===使用全等 如果使用=那么在$name内容不是admin的时候也会验证通过
  50. $name='admin';
  51. if (@$name && $name==='admin') {
  52. echo '欢迎您';
  53. } else {
  54. echo '未登录';
  55. }
  56. echo '<hr>';
  57. // 三元运算符 ? : 简化双分支if
  58. $jiage ='1000';
  59. if ($jiage < 500) {
  60. echo '太贵了';
  61. } else {
  62. echo '太便宜了';
  63. }
  64. //上面的代码可以简化 下面是简化的 这种简化的写法不方便加更多的属性
  65. if ($jiage < 500) echo '太贵了'; else echo '太便宜了';
  66. // 条件 ? true : false 下面是三元符写法
  67. echo $jiage > 1000 ? '太贵了' : '真便宜';
  68. echo '<hr>';
  69. // ?? null合并运算符 isset是如果
  70. //设置变量默认值
  71. $password = '123abc';
  72. //这是原写法 isset是如果password则输入它 ?是如果没有passwrd 则输入root
  73. $password = isset($password) ? $password : 'root';
  74. //下面是三元符写法
  75. $password = $password ?? 'root';
  76. echo $password;
  77. echo '<hr>';
  78. //在所有的错误面前加@ 可以屏蔽错误 语法错误不能屏蔽 程序上线的时候应屏蔽错误 否则会泄露数据库密码等信息
  79. @include 'hello.php';
  80. //流程控制
  81. # 单分支
  82. // 购买金额
  83. $amount = 5500;
  84. // 实际支付
  85. $payment = $amount;
  86. // 下方代码表示如果价格大于5000就打9这 这种大括号在html混编的时候不方便 下方介绍如果去掉大括号
  87. if ($amount > 5000) {
  88. $payment = $amount * 0.9;
  89. }
  90. // 有一种替代语法 : 模板语法, 用在与html代码混编的时候
  91. // 模板语法的目标是: 干掉大括号 大括号开始改成: 大括号介绍改成endif;
  92. if ($amount > 5000) :
  93. $payment = $amount * 0.1;
  94. endif;
  95. echo '实际支付: ' . $payment . '<br>';
  96. echo '<hr>';
  97. // 双分支模板语法 如果支付价格低于5000 就不打折 第二分支输出原价
  98. $amount = 3500;
  99. $payment = $amount;
  100. if ($amount > 5000) :
  101. $payment = $amount * 0.1;
  102. else:
  103. $payment = $amount;
  104. endif;
  105. echo '实际支付: ' . $payment . '<br>';
  106. echo '<hr>';
  107. // 3. 多分支 如果价格大于5000 小于 10000 那么打9折
  108. // 第二分支表示 如果价格大于等于10000 并且小于20000 打7这
  109. // 第三分支表示 如果价格大于20000 打五折
  110. // 第四行表示 如果小于5000不打折
  111. $amount = 15500;
  112. if ($amount > 5000 && $amount < 10000) :
  113. $payment = $amount * 0.9;
  114. elseif ($amount >= 10000 && $amount < 20000) :
  115. $payment = $amount * 0.7;
  116. elseif ($amount >= 20000) :
  117. $payment = $amount * 0.5;
  118. else :
  119. $payment = $amount;
  120. endif;
  121. echo '实际支付: ' . $payment . '<br>';
  122. echo '<hr>';
  123. // 4. switch: 简化多分支
  124. $amount = 5300;
  125. // 模板语法
  126. switch (true) :
  127. case $amount > 5000 && $amount < 10000:
  128. $payment = $amount * 0.9;
  129. // break: 跳出当前分支 不写的话不管多少钱都是打最高折扣
  130. break;
  131. case $amount >= 10000 && $amount < 20000:
  132. $payment = $amount * 0.7;
  133. break;
  134. case $amount >= 20000:
  135. $payment = $amount * 0.5;
  136. break;
  137. default:
  138. $payment = $amount;
  139. endswitch;
  140. echo '实际支付: ' . $payment . '<br>';
  141. echo '<hr>';
  142. // switch 更常用的场景是单值判断 显示出目前的折扣率
  143. $discount = 0.8;
  144. $amount = 10000;
  145. switch ($discount):
  146. case 0.9:
  147. $payment = $amount * 0.9;
  148. break;
  149. case 0.8:
  150. $payment = $amount * 0.8;
  151. break;
  152. default:
  153. die('不支持的折扣率');
  154. endswitch;
  155. echo '实际支付: ' . $payment . ', 折扣率: '. $discount;
  156. echo '<hr>';
  157. //循环
  158. $cities = ['武汉', '合肥', '南京', '杭州', '上海'];
  159. //不循环写法
  160. echo current($cities);
  161. next($cities);
  162. echo current($cities);
  163. next($cities);
  164. echo current($cities);
  165. echo '<hr>';
  166. //循环写法 1. 入口判断型
  167. // while是循环 current是获取当前值 next是移到下一个值
  168. while ($city = current($cities)) :
  169. echo $city . '<br>';
  170. // 更新循环条件, 没有这个语句, 会进入死循环 试了下浏览器差点卡死
  171. next($cities);
  172. endwhile;
  173. echo '<hr>';
  174. // 2. 出口判断型 do为开头 reset重置的意思
  175. reset($cities);
  176. do {
  177. $city = current($cities);
  178. echo $city . '<br>';
  179. // 更新循环条件, 没有这个语句, 会进入死循环
  180. next($cities);
  181. } while ($city = current($cities));
  182. // 无论条件是否为真,至少会执行一次
  183. // 没有对应的模板语法
  184. echo '<hr>';
  185. // 3. 计数型 count输入有几个数据
  186. echo '数组中有 : ' . count($cities);
  187. echo '<hr>';
  188. // $i = 0;循环变量初始化
  189. // $i < count($cities): 循环条件
  190. // $i++: 更新循环条件
  191. for ($i = 0; $i < count($cities); $i++) :
  192. echo $cities[$i] . '<br>';
  193. endfor;
  194. echo '<hr>';
  195. reset($cities);
  196. // continue: 终止当前循环,提前进入下一轮
  197. $cities = ['武汉', '合肥', false, '南京', null, '杭州', '上海'];
  198. // while ($city = current($cities)) :
  199. // echo $city . '<br>';
  200. // next($cities);
  201. // endwhile;
  202. for ($i = 0; $i < count($cities); $i++) :
  203. // 跳过空数据
  204. if (!$cities[$i]) continue;
  205. echo $cities[$i] . '<br>';
  206. // break; 跳出本层
  207. if ($cities[$i] === '杭州') break;
  208. 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