微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

突破 if 和 foreach

如何解决突破 if 和 foreach

if不是循环结构,所以你不能“打破它”。

但是,您可以foreach通过简单地调用break. 在您的示例中,它具有预期的效果

$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 and also the if statement
        break;
        some_function(); // never reached!
    }
    another_function();  // not executed after match/break
}

只是为了其他偶然发现这个问题并寻找答案的人的完整性。

break接受一个可选参数,它定义了它应该中断 多少个循环结构。 例子:

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

结果输出

1 3 2 1 !

解决方法

我有一个 foreach 循环和一个 if 语句。如果找到匹配项,我需要最终摆脱 foreach。

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>
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。