博客列表 >php流程控制基础知识

php流程控制基础知识

知行合一
知行合一原创
2020年07月10日 11:42:02655浏览

运算符

比较运算符

  • 比较运算符,返回布尔值。
  • ==类型不同,值相同,也返回true. ===必须值和类型相同才返回true
    1. var_dump(10<20);
    2. var_dump(100=='100');
    3. var_dump(100===100);
    4. var_dump(100==='100');

    太空船运算符

    PHP7以上版本支持
    1. var_dump(100<=>50);
    2. var_dump(100<=>100);
    3. var_dump(100<=>200);

    逻辑运算符

  • &&两边都是true返回true
  • ||用一个为true就返回true
    1. var_dump((10<20)&&(100<200));
    2. var_dump((10<5)&&(100<200));
    3. var_dump((10<5)||(100<200));

    短路求值

    1. $username='zhangsan';
    2. //如果第一个值为flase,就不会去执行第二个值了。
    3. if (isset($username)&&$username=='admin')
    4. {
    5. echo '登陆成功';
    6. }
    7. else{
    8. echo '登录不成功';
    9. }

    三元运算符

    1. $price=1500;
    2. echo $price>1000?'太贵了':'太便宜了';
    3. //如果密码为空,默认为root
    4. $password='123';
    5. echo isset($password)?$password:'root';
    6. echo '<hr>';

    null合并运算符

    当变量不存在时显示??后面的内容
    echo $email??'10000@qq.com';

    分支结构

    单分支结构

    1. $amount=5500;
    2. $payment=$amount;
    3. if($amount>=5000){
    4. $payment=$amount*0.9;
    5. }
    6. echo '实际支付'.$payment.'<br>';
    7. // if($amount>=5000) $payment=$amount*0.9; 流程控制语句只有一行代码,可以这样简写,但不建议,没有可读性。
    8. //模板语法,干掉大括号,也可以像下面这样写。
    9. //第一个大括号用冒号:代替,第二个用特殊关键词代替。
    10. if($amount>=5000):
    11. $payment=$amount*0.9;
    12. endif;
    13. echo '单分支'.$payment.'<hr>';

    双分支

    1. $amount=6000;
    2. if($amount>=5000){
    3. $payment=$amount*0.9;
    4. }
    5. else{
    6. $payment=$amount;
    7. }
    8. echo $payment.'<br>';
    9. //改造下,改成模板语法
    10. $amount=10000;
    11. if($amount>=5000):
    12. $payment=$amount*0.9;
    13. else:
    14. $payment=$amount;
    15. endif;
    16. echo '双分支'.$payment.'<hr>';

    多分支

    1. $amount=2000;
    2. if($amount>=5000&&$amount<10000){
    3. $payment=$amount*0.9;
    4. }elseif($amount>=10000&&$amount<20000){
    5. $payment=$amount*0.8;
    6. }elseif($amount>=20000){
    7. $payment=$amount*0.7;
    8. }else{
    9. $payment=$amount;
    10. }
    11. echo $payment.'<br>';
    12. //模板语法改造如下
    13. $amount=22000;
    14. if($amount>=5000&&$amount<10000):
    15. $payment=$amount*0.9;
    16. elseif($amount>=10000&&$amount<20000):
    17. $payment=$amount*0.8;
    18. elseif($amount>=20000):
    19. $payment=$amount*0.7;
    20. else:
    21. $payment=$amount;
    22. endif;
    23. echo '多分支'.$payment.'<hr>';

    switch 简化分支

    1. $amount=22000;
    2. switch (true){ //true表示条件为真,进入循环 也可以用$amount. 变量有数据的话也会被认为成立,就进入下面的代码
    3. case ($amount>=5000&&$amount<10000): //不要括号也可以
    4. $payment=$amount*0.9;
    5. break;
    6. case $amount>=10000&&$amount<20000:
    7. $payment=$amount*0.8;
    8. break;
    9. case $amount>=20000:
    10. $payment=$amount*0.7;
    11. break;
    12. default:
    13. $payment=$amount;
    14. }
    15. echo 'switch分支区间判断'.$payment.'<br>';
    16. //switch 通常用在单值判断
    17. $discount=0.7;
    18. $amount=10000;
    19. switch ($discount){
    20. case 0.9:
    21. $payment=$amount*0.9;
    22. break;
    23. case 0.8:
    24. $payment=$amount*0.8;
    25. break;
    26. case 0.7:
    27. $payment=$amount*0.7;
    28. break;
    29. default:
    30. die('不支持的折扣率');//die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。
    31. }
    32. echo 'switch分支单值判断'.$payment.'<br>';
    33. //模板语法
    34. $discount=0.8;
    35. $amount=10000;
    36. switch ($discount):
    37. case 0.9:
    38. $payment=$amount*0.9;
    39. break;
    40. case 0.8:
    41. $payment=$amount*0.8;
    42. break;
    43. case 0.7:
    44. $payment=$amount*0.7;
    45. break;
    46. default:
    47. die('不支持的折扣率');//die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。
    48. endswitch;
    49. echo 'switch分支单值判断模板语法'.$payment.'<br>';

    循环

    while循环

    进行循环之前先进行判断 ,条件为真才执行循环体
    1. $cities=['北京','上海','广州','深圳','天津','重庆'];
    2. echo current($cities); //current() 函数返回数组中的当前元素的值。
    3. echo next($cities); //将内部指针指向数组中的下一个元素,并输出。
    4. echo '<font color=red>while循环开始</font>'.'<br>';
    5. while(current($cities)){
    6. echo current($cities).'<br>';
    7. next($cities);
    8. }
    9. echo'<hr>';
    10. reset($cities); //指针复位 指针回到第一条数据。
    11. while($city=current($cities)){ //将当前数组元素赋值给一个变量
    12. echo $city.'<br>';
    13. next($cities);
    14. }
    15. echo'<hr>';
    16. //模板语法
    17. reset($cities);
    18. while($city=current($cities)):
    19. echo $city.'<br>';
    20. next($cities);
    21. endwhile;

    出口判断型循环do while

    一般不使用。 没有对应的模板语法。
    1. echo '<font color=red>do while循环开始</font>'.'<br>';
    2. reset($cities);
    3. do{
    4. echo $city.'<br>';
    5. next($cities);
    6. }while($city=current($cities)); //因为第一次循环 $city没定义,所以第一项数据不会被输出。

    计数型循环 for循环

    1. echo '<font color=red>for循环开始</font>'.'<br>';
    2. count($cities); //count 返回数组中元素的数目:
    3. for($i=0;$i<count($cities);$i++)
    4. {
    5. //输出拦截
    6. if ($i>2) break; //break提前中止循环
    7. echo $cities[$i].'<br>';
    8. }
    9. echo '<hr>';
    10. //模板语法
    11. reset($cities);
    12. for($i=0;$i<count($cities);$i++):
    13. if ($i===2) continue; //continue中止当条,循环继续执行
    14. echo $cities[$i].'<br>';
    15. endfor;

    模板语法用表格输出二维数组

    1. <?php
    2. $user=[
    3. ['id'=>1,'username'=>'zhangsan','sex'=>'男'],
    4. ['id'=>2,'username'=>'lisi','sex'=>'女'],
    5. ['id'=>3,'username'=>'wangwu','sex'=>'男'],
    6. ]
    7. ?>
    8. <!DOCTYPE html>
    9. <html lang="en">
    10. <head>
    11. <meta charset="UTF-8">
    12. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    13. <title>Document</title>
    14. </head>
    15. <body>
    16. <?php
    17. echo '<table border=1>';
    18. for($i=0;$i<count($user);$i++)
    19. {
    20. echo '<tr><td>'.$user[$i]['id'].'</td><td>'.$user[$i]['username'].'</td><td>'.$user[$i]['sex'].'</td></tr>';
    21. }
    22. echo '</table>';
    23. ?>
    24. <!--模板语法来写-->
    25. <table border='1'>
    26. <?php for($i=0;$i<count($user);$i++): ?>
    27. <tr>
    28. <td><?php echo $user[$i]['id'];?></td>
    29. <td><?php echo $user[$i]['username']; ?></td>
    30. <td><?php echo $user[$i]['sex']; ?></td>
    31. </tr>
    32. <?PHP endfor; ?>
    33. </table>
    34. </body>
    35. </html>

    总结

    php流程控制知识相对比较简单,做好笔记。忘记时,就来看看,长久才会积累下来。好记性不如个烂笔头!
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议