我有一个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>
    }
}

推荐答案

if不是一个循环 struct ,所以你不能"跳出它".

然而,你只需拨打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 and also the if statement
        break;
        some_function(); // never reached!
    }
    another_function();  // not executed after match/break
}

对于那些偶然发现这个问题并寻求答案的人来说,这是一个完整的答案..

break接受一个可选参数,该参数定义了它应该中断的how many个循环 struct .例子:

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 !

Php相关问答推荐

我的docker—compose lamp stack在软件更新后不工作:Containerconfig错误'''

Laravel:从匹配的数组数据中获取记录

显示WooCommerce当前产品类别或标签的短代码

PHP,ZipArchive删除一个空文件?

Symfony装置加载:try 从命名空间加载类";ClassUtils";Doctrine\Common\Util";

如何减少Laravel分页中的链接数

不包括WooCommerce中单独销售的产品

使用PHP编码的字符串与使用OpenSSL编写的shell 代码之间的差异

如何使用MS Graph PHP SDK V2下载文件

无额外字段的Laravel同步

在WooCommerce存档页面中显示可变产品的库存变化属性

服务器升级到新的mysql版本8.0.34后查询错误

如何将不同的 Woocommerce 费用合并为一个名称?

按日期向 WooCommerce 中的我的帐户订单添加过滤器

批量更新 WooCommerce 中所有产品的特定自定义字段

如何处理 Null 上的 array_shift() ?

在 WooCommerce wc_get_products 函数中处理自定义分类法

在 groupBy laravel 5.7 中 Select 多列

PHP preg_replace括号和方括号内的所有逗号

如何在 Process facade 中转义特殊字符?