打破 if 和 foreach
P粉651109397
P粉651109397 2023-08-28 11:32:39
0
2
598
<p>我有一個 foreach 迴圈和一個 if 語句。如果找到匹配項,我需要最終突破 foreach。 </p> <pre class="brush:php;toolbar:false;">foreach ($equipxml as $equip) { $current_device = $equip->xpath("name"); if ($current_device[0] == $device) { // Found a match in the file. $nodeid = $equip->id; <break out of if and foreach here> } }</pre> <p><br /></p>
P粉651109397
P粉651109397

全部回覆(2)
P粉564192131
foreach($equipxml as $equip) {
    $current_device = $equip->xpath("name");
    if ( $current_device[0] == $device ) {
        // found a match in the file            
        $nodeid = $equip->id;
        break;
    }
}

只要使用break。這樣就可以了。

P粉729436537

if 不是循環結構,因此您無法「打破它」。

但是,您可以透過簡單地呼叫 break 來突破 foreach 。在您的範例中,它具有預期的效果:

$device = "wanted";
foreach($equipxml as $equip) {
    $current_device = $equip->xpath("name");
    if ( $current_device[0] == $device ) {
        // found a match in the file            
        $nodeid = $equip->id;

        // will leave the foreach loop immediately and also the if statement
        break;
        some_function(); // never reached!
    }
    another_function();  // not executed after match/break
}

只是為了讓其他偶然發現此問題並尋求答案的人保持完整。

break 採用可選參數,定義有多少 它應該打破的循環結構。範例:

foreach (['1','2','3'] as $a) {
    echo "$a ";
    foreach (['3','2','1'] as $b) {
        echo "$b ";
        if ($a == $b) { 
            break 2;  // this will break both foreach loops
        }
    }
    echo ". ";  // never reached!
}
echo "!";

結果輸出:

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板