PHP - 基础 - 流程控制

  • PHP的遍历数组三种方式及各自区别
  • 延伸:分支结构

PHP的遍历数组的三种方式及各自区别

三种方式

  1. 使用for循环
  2. 使用foreach循环
  3. 使用while、list()、each()组合循环

区别

  • for 循环只能遍历索引数组
  • foreach 可以遍历索引和关联数组,联合使用list(),each()和while 循环同样可以遍历索引和关联数组;
  • while、list()、each()组合不会 reset()
  • foreach遍历会对数组进行 reset() 操作

分支结构

if….elseif

  • 在elseif语句中只能有一个表达式为 true ,即在elseif语句中只能有一个语句块被执行,多个elseif从句是排斥关系。
  • 使用elseif语句有一个基本原则,总吧优先范围小的条件放在前面处理。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $a = 5;
    if($a < 3){

    }elseif($a > 3){

    }else{
    // $a == 3;
    }
    ?>

switch…case…

  • 和 if 不同的是, switch后面的控制表达式的数据类型只能是整形、浮点类型或字符串

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $a = 5;
    switch($a){
    case 1;
    echo 'a = 1';
    break;
    case 2:
    echo 'a = 2';
    break;
    default:
    echo 'a 不是预期的数字';
    break;
    }
    ?>
  • continue 语句作用到 switch 的作用类似于 break

  • 跳出 switch 外的循环,可以使用 continue 2
    continue

效率

如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么使用 switch 语句可能会快一些

重点

理解循环内部机制,更易于记忆 foreachreset 特性,分支结构中理解了 switch…case 的执行步骤也就不难理解为什么效率高了。

问题

PHP中如何优化多个if…elseif语句的情况?

  1. 可能性较大的尽量往前挪;
  2. 如果判断的是一个比较复杂的结构,且判断的值是整型、浮点或字符串可以使用 switch…case