美文网首页
5.1 For 循环

5.1 For 循环

作者: 57fc17b7d598 | 来源:发表于2017-06-22 17:51 被阅读13次

    for 是PHP中循环结构里最复杂的一个,格式如下:

    for(表达式1 ; 表达式2 ; 表达式3){
      // 循环体,也就是你的业务逻辑代码
    }
    

    表达式1:用于初始化数据,仅循环结构最开始的时候执行一次,之后不会再执行。
    表达式2:用于条件判断,每次循环开始前执行,TRUE 则继续,FALSE 则退出循环。
    表达式3:一般用于数据递增,每次循环之后执行。

    看一个简单的例子:

    // 将输出 0123456789
    for($i = 0 ; $i < 10; $i++){
      echo $i;
    }
    

    for 循环结构在执行的时候会分几步去操作

    1. 执行 表达式1,只在最开始的时候执行一次
    2. 执行 表达式2,如果条件不满足,则退出循环,反之则继续
    3. 执行 循环体
    4. 执行 表达式3
    5. 随后依次执行234步骤

    搞清楚三个表达式的意思和执行步骤后,再来这个例子:

    $i = 0;
    // 输出 0123456789
    for( ; $i < 10; $i++){
        echo $i;
    }
    

    在这个例子中没有 表达式1 ,这代表 表达式1 可有可无,但是隔开 表达式2 的那个分号一定要有,否则结构体不正确就会报错了。

    继续看例子:

    $i = 0;
    // 输出 0123456789
    for( ; ; $i++){
        if($i == 10) break;
        echo $i;
    }
    

    在这个例子中,表达式2 也没有了,但程序还是正常执行,这是因为 PHP 在执行到这一步的时候,如果没有表达式,则默认为 TRUE

    继续看例子:

    $i = 0;
    // 输出 0123456789
    for( ; ; ){
        if($i == 10) break;
        echo $i;
        $i++;
    }
    

    表达式3 同样也没有了。

    这么多例子中,唯一保持不变的就是位于for( ; ; )中间的分号,分号是保证for循环结构的顶梁柱,缺一不可,只要有了分号,那么三个表达式都是可有可无的。

    但不管省略掉多少表达式,始终要记得判断好循环条件,否则造成无限循环,程序就卡死了。

    上面的例子一直在减少表达式,那么看下面的例子:

    // 输出 00112233445566778899
    for( $i = 0, $j = 0; ; ){
        if($i == 10) break;
        echo "$i$j";
        $i++;
        $j++;
    }
    

    表达式1 的地方存在了两个表达式,中间用逗号,隔开,事实上还可以设置更多,看自己需求,这一点不仅仅只是 表达式1,其他两个表达式也同样如此。

    继续看例子:

    /*
    输出 下列数字
        0   0 
        3   1 
        6   2 
        9   3 
        12   4 
        15   5 
    */
    for( $i = 0, $j = 0; $i < 10, $j < 6; ){
        if($i == 10) break;
        echo "$i \t $j <br />";
        $i += 3;
        $j++;
    }
    

    在这个 for 循环中,表达式2 的地方使用了两个逻辑表达式,它们的条件分别是 $i < 10$j < 5,但实际运行后,$i 都增加到 15 了,早就大于 10了,再看后面一个条件,实际运行结果看起来到是符合这个条件。

    其中原因是,PHP 不管 for 循环中 表达式2 的位置里有多少逻辑表达式,它只看最后一个表达式的判断结果。

    至于 表达式3 就不进行演示了,因为三个表达式中只有 表达式2 看起来有特殊功能。

    需要注意的是,在这些表达式中,同样可以使用函数、变量、对象属性、对象方法、以及部分PHP语句(如print)。

    for循环也支持第二种方式:

    for($i = 0; $i < 10;$i++):
        echo $i;
    endfor;
    

    相关文章

      网友评论

          本文标题:5.1 For 循环

          本文链接:https://www.haomeiwen.com/subject/hkwfcxtx.html