Blogger Information
Blog 9
fans 0
comment 0
visits 7975
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
流程控制的深入
若是梦终会醒
Original
874 people have browsed it

流程控制的深入

1 运算符

1.1 三元运算符 ?:简化双分支

  1. $a=isset($a)?$a:$a='root';
  2. echo $a;//root

1.2 ?? 设置默认值

  1. $a = $a ?? 333;
  2. echo $a . '<br>';//333
  3. $b ?? $b = 444;
  4. echo $b . '<br>';//444
  5. $c ?? $d = 555;
  6. echo $d . '<br>';//555
  7. $a1 ?? 666;
  8. echo $a1.'<br>';//报错未定义
  9. echo $a2 ?? 777;
  10. echo '<br>';//777

小结:

?? 是对 isset()双分支的三元运算 ?: 的进一步缩写 使代码更加简洁;

  1. $a=isset($a)?$a:'root';
  2. //等同于
  3. $a=$a??'root';

2 分支结构

2.1 单分支

使用单分支判断用户名是否为空

  1. $name = $_POST['username'] ?? null;
  2. if ($name===null) :
  3. $arr = ['code' => 1, 'msg' => '用户名为空', 'data' => ''];
  4. var_dump(json_encode($arr, JSON_UNESCAPED_UNICODE));
  5. endif;
  6. //string(44) "{"code":1,"msg":"用户名为空","data":""}"

2.2 双分支

使用双分支判断$n的值范围进行加或者减

  1. function demo($n){
  2. $n>10?--$n:$n++;
  3. return $n;
  4. }
  5. echo demo(8);//9
  6. echo '<br>';
  7. echo demo(18);//17

2.3 多分支

使用多分支判断否是是自己想要的结果

  1. function demo($n)
  2. {
  3. if ($n === 1) :
  4. $res = '输入错误,这是数值1';
  5. elseif ($n === '1') :
  6. $res = '输入错误,这是字符串1';
  7. elseif ($n === 'true') :
  8. $res = '输入错误,这是布尔值1';
  9. else:
  10. $res='这是我管不了的变量';
  11. endif;
  12. return $res;
  13. }
  14. echo demo(1);//输入错误,这是数值1
  15. echo '<br>';
  16. echo demo('1');//输入错误,这是字符串1
  17. echo '<br>';
  18. echo demo('true');//输入错误,这是布尔值1
  19. echo '<br>';
  20. echo demo('3');//这是我管不了的变量;

2.4 switch 分支

使用switch分支写一个计算器

  1. $number1 = $_POST['number1'] ?? 5;
  2. $number2 = $_POST['number2'] ?? 5;
  3. $counter = $_POST['counter'] ?? '+';
  4. switch ($counter) {
  5. case '+':
  6. $sum = $number1 + $number2;
  7. break;
  8. case '-':
  9. $sum = $number1 - $number2;
  10. break;
  11. case '*':
  12. $sum = $number1 * $number2;
  13. break;
  14. case '/':
  15. $sum = $number1 / $number2;
  16. break;
  17. default:
  18. $sum = '参数非法';
  19. }
  20. echo $sum;//10

3 循环结构

3.1 for循环

break:中断循环

  1. for($i=1; $i<=5; $i++) :
  2. if($i==3)
  3. break; //中断循环
  4. echo "{$i}:流程控制<br>";
  5. endfor;
  6. 1:流程控制
  7. 2:流程控制

continue:中断当前循环,进入下一个循环

  1. for($i=1; $i<=5; $i++) :
  2. if($i==3)
  3. continue; //中断循环
  4. echo "{$i}:流程控制<br>";
  5. endfor;
  6. 1:流程控制
  7. 2:流程控制
  8. 4:流程控制
  9. 5:流程控制

break和continue默认中断、跳出1重循环,如果调中断、跳出多重循环,在后面加一个数字。

  1. for ($i = 1; $i <= 5; $i++) : //循环行
  2. for ($j = 1; $j <= $i; $j++) :
  3. if ($i === 3)
  4. break 2; //循环列
  5. echo $j, ' ';
  6. endfor;
  7. echo '<br>';
  8. endfor;
  9. 1
  10. 1 2
  11. for ($i = 1; $i <= 5; $i++) : //循环行
  12. for ($j = 1; $j <= $i; $j++) :
  13. if ($i === 3)
  14. break; //循环列
  15. echo $j, ' ';
  16. endfor;
  17. echo '<br>';
  18. endfor;
  19. 1
  20. 1 2
  21. 1 2 3 4
  22. 1 2 3 4 5
  23. for ($i = 1; $i <= 5; $i++) : //循环行
  24. for ($j = 1; $j <= $i; $j++) :
  25. if ($j === 3)
  26. break; //循环列
  27. echo $j, ' ';
  28. endfor;
  29. echo '<br>';
  30. endfor;
  31. 1
  32. 1 2
  33. 1 2
  34. 1 2
  35. 1 2

do…while()先无条件执行一次

  1. $k = 0;
  2. do {
  3. echo "{$k}:流程控制<br>";
  4. $k++;
  5. } while ($k <= 3);
  6. 0:流程控制
  7. 1:流程控制
  8. 2:流程控制
  9. 3:流程控制
  10. $k = 0;
  11. do {
  12. echo "{$k}:流程控制<br>";
  13. $k++;
  14. } while ($k >= 3);
  15. 0:流程控制

4 综合应用

  1. 99乘法表

    1. echo '<table border="1">';
    2. for($i=1;$i<=9;$i++): //行
    3. echo '<tr>';
    4. for($j=1;$j<=$i;$j++): //列
    5. echo "<td>{$j}*{$i}=".($j*$i).'</td>';
    6. endfor;
    7. echo '</tr>';
    8. endfor;
    9. echo '</table>';
  1. 有100元钱问怎么购买正好可以买100本 10元的大的 5元的 中的 0.5元的小的

    1. for ($i = 1; $i <= 10; $i++) :
    2. for ($j = 1; $j <= 20; $j++) :
    3. for ($k = 1; $k <= 100; $k++) :
    4. if ($i*10 + $j*5 + $k*0.5 == 100&&$i + $j + $k==100)
    5. echo $i.' ', $j.' ', $k, '<br>';
    6. endfor;
    7. endfor;
    8. endfor;

5 总结

分支结构和循环都是为了让逻辑能在代码中表现出来;

为以后的业务逻辑打下基础!

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