for循环中初始化表达式和条件表达式的小知识

<?php
//========== DEMO-1 ==========//


function get_condition(): int
{
    echo 'get_condition()被调用' . PHP_EOL;
    return 5;
}

// 条件表达式里的get_condition()会多次执行,为了提高效率应该避免在条件表达式里调用函数
for ($i = 0; $i < get_condition(); $i++) {
    echo '$i = ' . $i . PHP_EOL;
}


// get_condition()被调用
// $i = 0
// get_condition()被调用
// $i = 1
// get_condition()被调用
// $i = 2
// get_condition()被调用
// $i = 3
// get_condition()被调用
// $i = 4
// get_condition()被调用


//========== DEMO-2 ==========//


$c = 10;
for ($j = 0; $j < $c; $j++) {
    echo '$j = ' . $j . PHP_EOL;

    if ($j === 3) {
        $c = 0; // 这里修改$c的值会影响条件表达式
    }
}


// $j = 0
// $j = 1
// $j = 2
// $j = 3


//========== DEMO-3 ==========//


// 在初始化表达式里同时初始化$k、$arr、$count
for ($k = 0, $arr = [9, 5, 2, 7], $count = count($arr); $k < $count; $k++) {
    echo "\$arr[$k] = " . $arr[$k] . PHP_EOL;
}


// $arr[0] = 9
// $arr[1] = 5
// $arr[2] = 2
// $arr[3] = 7


//========== 总结 ==========//
// 1、for循环的条件表达式会进行多次计算,所以设置条件表达式时应该用确定的值,而不是调用函数或方法。
// 2、for循环的条件表达式可以随时修改,从而实现不使用break退出循环,但该方式可读性较差,基本不会使用。
// 3、for循环的初始化表达式可以同时初始化多个值,每个初始化语句之间用半角逗号隔开。

Copyright © 2024 码农人生. All Rights Reserved