au_*_*tan 264 php foreach if-statement break
我有一个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>
}
}
Run Code Online (Sandbox Code Playgroud)
Kai*_*aii 571
if
不是循环结构,所以你不能"突破它".
但是,您可以foreach
通过简单地调用来突破break
.在您的示例中,它具有所需的效果:
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;
}
this_command_is_not_executed_after_a_match_is_found();
}
Run Code Online (Sandbox Code Playgroud)
只是为了完成其他人偶然发现这个问题寻找答案..
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 "!";
Run Code Online (Sandbox Code Playgroud)
结果输出:
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);
Run Code Online (Sandbox Code Playgroud)
如果你想知道语法:它的工作原理是因为这里使用了缩写语法.外部花括号可以省略,因为循环结构只包含一个语句:if ($foo) { .. }
.
另一个例子:do $i++; while ($i < 100)
相当于do { $i++; } while ($i < 100)
.
Dec*_*ler 11
foreach($equipxml as $equip) {
$current_device = $equip->xpath("name");
if ( $current_device[0] == $device ) {
// found a match in the file
$nodeid = $equip->id;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
简单地使用break
.那样做.
归档时间: |
|
查看次数: |
385076 次 |
最近记录: |