如何使数组位置等于变量

时间:2014-03-13 17:18:28

标签: php

我想要做的是运行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;
}

3 个答案:

答案 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;}

}