我有一个foreach循环和一个if语句。如果发现匹配,我需要最终跳出foreach循环。
foreach($equip 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 不是循环结构,所以你不能使用它跳出循环。
但是,您可以通过简单地调用来break来跳出foreach循环。在您的示例中,它具有所需的效果:
foreach($equip 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;
}
this_command_is_not_executed_after_a_match_is_found();
}
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!
如果出于某些不明原因 - 你想要break一个if语句(这不是一个循环结构,因此每个定义都不易破解),你可以简单地将你包裹if在一个微小的循环结构中,这样你就可以跳出那个代码块。
请注意,这是完全黑客攻击,通常你不想这样做:
do if ($foo)
{
// Do something first...
// Shall we continue with this block, or exit now?
if ($abort === true) break;
// Continue doing something...
} while (false);
如果你想知道语法:它的工作原理是因为这里使用了缩写语法。外部花括号可以省略,因为循环结构只包含一个语句:if ($foo) { .. }。
另一个例子:
do $i++; while ($i < 100)
相当于
do { $i++; } while ($i < 100) 继续阅读与本文标签相同的文章
上一篇 :
那些被开发者所青睐的浏览器扩展插件
下一篇 :
一文搞懂Nginx限流,原来这么简单
-
Robotframework-RED-指定测试报告存放的路径
2026-05-15栏目: 教程
-
株洲首个数据中心站投运
2026-05-15栏目: 教程
-
微软Edge新标签页迎来新布局:新闻区可替换为工作相关内容
2026-05-15栏目: 教程
-
取快递件竟有BUG!这是恶意为之?双十一得好好注意了
2026-05-15栏目: 教程
-
“缺芯少屏”现状或将改善,静电消除及洁净室工程需求增长
2026-05-15栏目: 教程
