foreach终止循环详解

发布时间:2023-05-21

一、break语句的使用

在使用foreach循环时,我们可以通过break语句来提前结束循环。如下示例:

$fruits = array("apple", "banana", "orange", "watermelon", "grape");
foreach($fruits as $fruit){
    if($fruit == "orange"){
        break;
    }
    echo $fruit . " ";
}

执行以上代码,得到的结果为:

apple banana

这是因为当$fruit等于"orange"时,就会执行break语句,跳出循环。

二、continue语句的使用

除了使用break语句终止循环外,我们还可以使用continue语句跳过当前循环,继续执行下一次循环。如下示例:

$fruits = array("apple", "banana", "orange", "watermelon", "grape");
foreach($fruits as $fruit){
    if($fruit == "orange"){
        continue;
    }
    echo $fruit . " ";
}

执行以上代码,得到的结果为:

apple banana watermelon grape

这是因为当$fruit等于"orange"时,就会执行continue语句,跳过当前循环,继续执行下一次循环。

三、break和continue语句在嵌套循环中的使用

当我们在嵌套循环中使用break和continue语句时,需要注意它们的影响范围。如下示例:

for($i = 1; $i <= 3; $i++){
    for($j = 1; $j <= 3; $j++){
        if($j == 2){
            break;
        }
        echo "i = " . $i . ", j = " . $j . " ";
    }
    echo "<br>";
}

执行以上代码,得到的结果为:

i = 1, j = 1
i = 2, j = 1
i = 3, j = 1

这是因为当$j等于2时,执行break语句,只会跳出内层循环,继续执行外层循环。 如果我们将内层循环中的break语句替换为continue语句,如下示例:

for($i = 1; $i <= 3; $i++){
    for($j = 1; $j <= 3; $j++){
        if($j == 2){
            continue;
        }
        echo "i = " . $i . ", j = " . $j . " ";
    }
    echo "<br>";
}

执行以上代码,得到的结果为:

i = 1, j = 1 i = 1, j = 3
i = 2, j = 1 i = 2, j = 3
i = 3, j = 1 i = 3, j = 3

这是因为当$j等于2时,执行continue语句,只会跳过本次内层循环,继续执行下一次内层循环。

四、使用标签和goto语句

除了使用break和continue语句终止或跳过循环外,我们还可以使用标签和goto语句来控制循环。如下示例:

$fruits = array("apple", "banana", "orange", "watermelon", "grape");
$i = 0;
start:
    if($i >= count($fruits)){
        goto end;
    }
    if($fruits[$i] == "orange"){
        $i++;
        goto start;
    }
    echo $fruits[$i] . " ";
    $i++;
    goto start;
end:

执行以上代码,得到的结果为:

apple banana watermelon grape

这是因为我们在代码中定义了一个标签startgoto语句可以跳转到这个标签处执行代码。当遇到$fruits[$i]等于"orange"时,我们使用goto语句跳转到标签start处,跳过当前循环。