博客列表 >PHP运算符、PHP分支结构和循环、模板语法在模板中的应用

PHP运算符、PHP分支结构和循环、模板语法在模板中的应用

嘬一口啊
嘬一口啊原创
2020年07月09日 10:50:44851浏览

php中的运算符

  • 比较运算符

==:两边操作数值相等即可

===两边操作数不仅值相等,类型也要相同

!==两边操作数值不相等

<=> 太空船运算符[当左边的小于右边输出-1 当左边的大于右边的输出1 当两边相等输出0]

  1. 例:
  2. // == 两边操作数值相等
  3. var_dump(100 == '100'); // 输出true
  4. // === 两边操作数值和类型都相等
  5. var_dump(200 === '200'); // 返回false 两边操作数类型不同
  6. // !== 两边操作数比较值,值不相等返回true
  7. var_dump(200 !== 100);
  8. // 太空船运算符
  9. var_dump(10 <=> 20); // 输出 -1
  10. var_dump(10 <=> 10); // 输出 0
  11. var_dump(20 <=> 10); // 输出 1
  • 逻辑运算符

&&:逻辑与运算符,两边的表达式全为true,否则返回false

||:逻辑或运算符,两边的表达式只要有一个为true则返回true

  1. 例:
  2. var_dump((10 > 8) && (10 > 5)); // 输出true 两边表达式全为true
  3. echo '<br>';
  4. var_dump((10 > 8) && (5 > 15)); // 输出false 右边表达式为false 所以输出false
  5. echo '<br>';
  6. var_dump((10 > 8) || (5 > 15)); // 输出true 左边表达式为true故输出true

短路求值

第一个表达式不成立时直接走else区间不会再去计算第二个表达式

  1. // 以下面例子为例 当$username表达式不成立时直接走else输出no不会再计算$username === 'admin';
  2. 例:
  3. $username = '张三';
  4. if ($username && $username === 'admin') {
  5. echo 'ok';
  6. }else
  7. echo 'no';
  8. }
  • 三元运算符

表达式 ? 表达式为走的真区间 : 表达式为假走的区间;

??:三元运算中的合并运算(用于执行isset()检测的三元运算的快捷方式)

  1. 例:
  2. // 常规写法
  3. $price = 4000;
  4. if($price>3000) {
  5. echo '有点贵';
  6. } else {
  7. echo '买它';
  8. }
  9. // 三元运算符写法
  10. echo $price > 3000 ? '有点贵' : '买它';
  11. // 三元运算默认值
  12. $password = '123456';
  13. // 当$password存在时输出$password的值否则输出给定的默认值
  14. echo isset($password) ? $password :'root';
  15. // 使用??简化:isset() + 三元运算 = 变量默认值 方式
  16. echo $password ?? 'root';

php中的分值结构

  • 单分支结构

if(条件) { 执行代码 }

  1. 例:
  2. $price = 500;
  3. // 1.单分支结构
  4. if ($price >= 500) {
  5. // 价格大于等于500打九折
  6. echo $price * 0.9;
  7. }

简写:当流程控制中只有一行代码的时候,可以省略大括号

  1. 例:
  2. $price = 500;
  3. if ($price >= 500) echo $price * 0.8;
  • 单分支模板语法

if(条件) : 执行代码 endif[就是把初始大括号用冒号代替,结束大括号用指定关键字代替]

  1. // 模板语法
  2. 例:
  3. $price = 500;
  4. if ($price >= 500) :
  5. // 价格大于等于500打九折
  6. echo $price * 0.9;
  7. endif;
  8. // 一行简写
  9. if ($price >= 500) : echo $price * 0.5;endif;
  • 双分支结构

if(条件) { true执行代码 } else { false执行代码 }

  1. 例:
  2. $price = 300;
  3. if ($price >= 300) {
  4. // 当价格大于等于300是走这个区间打九折
  5. $payment = $price * 0.9;
  6. } else {
  7. // 当价格不满足表达式价格小于300时走这个区间,原价格
  8. $payment = $price;
  9. }
  10. // 打印最后结账价格
  11. var_dump($payment);
  • 双分支模板语法

if(条件) : true执行代码 else : false执行代码 endif

注意:else前面的花括号直接去掉没有东西代替

  1. 例:
  2. $price = 300
  3. if ($price >= 300) :
  4. $payment = $price * 0.9;
  5. else :
  6. $payment = $price;
  7. endif;
  8. var_dump($payment);
  • 多分支结构

多分支:if(条件)else { 执行代码 } elsef(条件){执行代码} else { 默认值 }

注意:这里的elseif根据需求来写上面两个只是例子

  1. 例:
  2. $price = 5000;
  3. if ($price > 1000 && $price < 2000) {
  4. $payment = $price * 0.9;
  5. } elseif($price > 2000 && $price < 3000) {
  6. $payment = $price * 0.7;
  7. } elseif ($price > 3000 && $price < 4000) {
  8. $payment = $price * 0.6;
  9. } elseif($price>4000 && $price <= 5000) {
  10. $payment = $price * 0.5;
  11. }else {
  12. // 默认值(当所有条件都不符合时)
  13. $payment = $price;
  14. }
  15. echo '实付价钱'.$payment;
  • 多分支模板语法

if(条件):执行代码; elseif(条件):执行代码;else:默认值;endif

  1. 例:
  2. $price = 3000;
  3. // 模板语法
  4. if ($price > 1000 && $price < 2000) :
  5. $payment = $price * 0.9;
  6. elseif($price > 2000 && $price < 3000) :
  7. $payment = $price * 0.7;
  8. elseif ($price > 3000 && $price < 4000) :
  9. $payment = $price * 0.6;
  10. elseif($price>4000 && $price <= 5000) :
  11. $payment = $price * 0.5;
  12. else :
  13. // 默认值(当所有条件都不符合时)
  14. $payment = $price;
  15. endif;
  16. echo '实付价钱'.$payment;
  • switch多分支[简化多分支]
  1. switch (条件) {
  2. case 表达式:
  3. 执行代码
  4. break;
  5. default:
  6. 执行代码
  7. break;
  8. }
  1. 例:
  2. $discount = 0.7;// 折扣
  3. $price = 6000; // 价钱
  4. switch ($discount) {
  5. case 0.7:
  6. $payment = $price * $discount;
  7. break;
  8. case 0.8:
  9. $payment = $price * $discount;
  10. break;
  11. case 0.9:
  12. $payment = $price * $discount;
  13. break;
  14. default:
  15. $payment = $price;
  16. break;
  17. }
  18. echo '实际结账啊'.$payment;
  • switch模板语法
  1. // 模板语法
  2. switch (条件) :
  3. case 表达式:
  4. 执行代码
  5. break;
  6. default:
  7. 执行代码
  8. break;
  9. endswitch;
  1. 例:
  2. $discount = 0.7;// 折扣
  3. $price = 5000; // 价钱
  4. switch ($discount) :
  5. case 0.7:
  6. $payment = $price * $discount;
  7. break;
  8. case 0.8:
  9. $payment = $price * $discount;
  10. break;
  11. case 0.9:
  12. $payment = $price * $discount;
  13. break;
  14. default:
  15. $payment = $price;
  16. break;
  17. endswitch;
  18. echo '实际结账啊'.$payment;

php循环

  • while循环

// while循环(入口循环:入口判断) while (条件) { 需要执行的代码 }

current($cities); // 输出数组中的当前元素

next($cities); // 指针下移

reset($cities);数组指针复位重新指向第一个

  1. 例:
  2. $cities = ['海淀', '丰台', '朝阳', '大兴', '昌平'];
  3. echo current($cities); // 输出数组中的当前元素 "海淀"
  4. next($cities); // 指针下移
  5. echo current($cities); // 输出丰台 上面指针下移所以输出丰台
  6. while ($city = current($cities)) {
  7. echo $city, '<br>';
  8. // 前移指针
  9. next($cities);
  10. }
  11. // 输出结果依次输出,海淀,丰台,朝阳,大兴,昌平
  • while模板语法

while(条件): 执行代码 endwhile

  1. 例:
  2. $cities = ['海淀', '丰台', '朝阳', '大兴', '昌平'];
  3. while ($city = current($cities)) :
  4. echo $city, '<br>';
  5. // 前移指针
  6. next($cities);
  7. endwhile;
  • do {执行代码} while (条件); 没有模板语法

do {执行代码} while (条件);判断型循环:出口判断 无论条件成不成立先执行一次

  1. 例:
  2. $cities = ['海淀', '丰台', '朝阳', '大兴', '昌平'];
  3. do {
  4. echo $city;
  5. next($cities);
  6. } while ($city = current($cities));
  7. // 输出结果丰台,朝阳,大兴,昌平因为在判断条件前限制性了一次数组指针下移
  • for循环

for (循环变量的初始化; 循环条件; 更新循环条件){ 执行代码 }

count(变量名); 数数,数数组中的元素个数

  1. 例:
  2. 这里$i的起始值是数组中元素的下标值 [下标值是从0开始的]
  3. for ($i=0; $i < count($cities) ; $i++) {
  4. var_dump($cities[$i]); echo '<br>';
  5. }
  • for循环模板语法

for (循环变量的初始化; 循环条件; 更新循环条件): 执行代码 endfor

  1. 例:
  2. for ($i=0; $i < count($cities) ; $i++) :
  3. var_dump($cities[$i]); echo '<br>';
  4. endfor;

模板语法在模板中的应用

  1. // 数据表查询结果通常是一个二维数组,用二维数组来模拟
  2. $users = [
  3. ['id'=>1, 'name'=>'zhu', 'grade'=> 60],
  4. ['id'=>2, 'name'=>'admin', 'grade'=> 50],
  5. ['id'=>3, 'name'=>'peter', 'grade'=> 20],
  6. ];
  7. ?>
  8. <!DOCTYPE html>
  9. <html>
  10. <head>
  11. <meta charset='utf-8'>
  12. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  13. <title><?php echo '这是title' ?></title>
  14. </head>
  15. <body>
  16. <table border='1'>
  17. <?php for($i=0;$i<count($users);$i++) : ?>
  18. <tr>
  19. <td><?php echo $users[$i]['id']?></td>
  20. <td><?php echo $users[$i]['name']?></td>
  21. <td><?php echo $users[$i]['grade']?></td>
  22. </tr>
  23. <?php endfor; ?>
  24. </table>
  25. </body>
  26. </html>

输出结果:

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