首页 > 解决方案 > 从循环php内部中断循环

问题描述

我有这样的数组,我使用 for 循环生成。我想打破循环,当它们具有值“AM”时,我该怎么做?

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => E
    [5] => F
    [6] => G
    [7] => H
    [8] => I
    [9] => J
    [10] => K
    [11] => L
    [12] => M
    [13] => N
    [14] => O
    [15] => P
    [16] => Q
    [17] => R
    [18] => S
    [19] => T
    [20] => U
    [21] => V
    [22] => W
    [23] => X
    [24] => Y
    [25] => Z
    [26] => AA
    [27] => AB
    [28] => AC
    [29] => AD
    [30] => AE
    [31] => AF
    [32] => AG
    [33] => AH
    [34] => AI
    [35] => AJ
    [36] => AK
    [37] => AL
    [38] => AM
    [39] => AN
    [40] => AO
    [41] => AP
    ...
    [726] => ZZ
)

这是我的语法

$alp = range("A","Z");
$hit = count(range("A","Z"));
for($i=0; $i < count(range("A","Z")); $i++) { 
    for ($i2=0; $i2 < count(range("A","Z")); $i2++) { 

        $alp[$hit++] = $alp[$i].$alp[$i2];
         if($alp[$hit] == "AM"){
            break;
           }

    }
    $hit++;
};

我遇到了一个错误,比如未定义的偏移量等,直到循环结束,当我在循环内中断循环时,我怎么能打破所有循环?

标签: phparraysloops

解决方案


在您的代码中:

 $alp[$hit++] = $alp[$i].$alp[$i2];
 // $hit is already increased.
 // Therefore `$alp[$hit]` does not exist
 if($alp[$hit] == "AM"){
    break;
 }

替换为:

 $alp[$hit] = $alp[$i].$alp[$i2];
 // $hit is still the same
 if($alp[$hit] == "AM"){
    // `break` will stop inner `for` loop (with $i2)
    break;
    // use `break 2;` to break both `for` loops
 }
 $hit++;

推荐阅读