我想要做的是运行for for循环,并且在foreach中搜索位置。我想要做的是,一旦它返回false我希望它打破并保存$ i在变量中的位置。我正在使用simple_html_dom.php,但我认为这不重要,因为这更像是一个基本的编程问题。
for($i = $0; $i < $20; $i++){
foreach($html->find('div[class=cate_link]',$i) as $a){
if (strpos($a->plaintext,'+info') == false){
break;
}
}
//this is not valid, but essentialy this is what I want to do.
$stop = $i;
}
答案 0 :(得分:1)
要在循环中打破多个级别,只需指定级别,例如break 2
- 请参阅中断手册 - http://www.php.net/manual/en/control-structures.break.php。
因此,您的代码可能会起作用
for($i = $0; $i < $20; $i++){
foreach($html->find('div[class=cate_link]',$i) as $a){
if (strpos($a->plaintext,'+info') == false){
$stop = $i; // Set variable
break 2; // break both loops
// or alternatively force the outer loop condition to expire
//$i = 21; // Force the outer loop to exit
//break;
}
}
}
我已经扩展到问题,设置$i = 21
以打破外部循环。
答案 1 :(得分:0)
未经测试的代码,但检查了语法......
<?php
// Untested code...
// Assume that you WILL break out of the loops...
$currentForIdx = -1; // so we can test that 'for' loop actually ran
$quitLoops = false;
for($i = 0; $i < $20 && !quitLoops; $i++) {
$currentForIdx = $i; // in case we break out of the loops
foreach($html->find('div[class=cate_link]',$i) as $a){
if (strpos($a->plaintext,'+info') == false) {
$quitLoops = true;
break;
}
}
}
// test $quitLoops and $currentForIdx to work out what happened...
?>
答案 2 :(得分:0)
我没有测试过这个,但我会尝试这样的事情:
for($i = $0; $i < $20; $i++){
$stop = false;
foreach($html->find('div[class=cate_link]',$i) as $a){
if (strpos($a->plaintext,'+info') == false){
$stop = $i;
}
}
if ($stop !== false) {break;}
}