重新启动PHP循环

时间:2013-02-03 11:44:53

标签: php foreach while-loop reset

我有这段代码

foreach($mnthArrPtrn as $m => $mn)
{   
    if(!isset($catName)) {
        $catVals = array();      
        $prevCat = $catName = $pntChrtQry[0]['CAT']['categoryname']; 
        $pntVals .= '{name:'.$catName.',data:[';
    }else if($prevCat != $catName) {
        $prevCat = $catName;
        $catVals = array(); 
        $pntVals .= '{name:'.$catName.',data:[';
    }     
    foreach($pntChrtQry as $key => $val){
        $catName = $val['CAT']['categoryname'];
        if($prevCat != $catName){
            continue 2;
        }
        echo '<br />$m::'.$m; 
        echo '<br />$mn::'.$mn;
        echo '<br />$val::'.$val[0]['MNTH'];
        if($m == $val[0]['MNTH'] || $mn == $val[0]['MNTH']){
            $catVals[] = $val[0]['total'];
        }
    }
    pr($catVals);
    if(!isset($catName)){
        $pntVals .= ']},';
    }
    $catName = $val['CAT']['categoryname'];
}

第一个循环遍历一个月的数组,这些数组作为键值对连接。 我在这里做的是获取一个新的catName我继续内部循环但同时我想用$ prevCat重新启动循环1,$ catName仍然保留它们的值。 这可能吗?对不起如果这是一个愚蠢的问题。

我尝试将第一个转换为while语句并使用重置,但它没有帮助我。

1 个答案:

答案 0 :(得分:4)

这样的东西可以让你随意重启一个循环:

while (list($key, $value) = each($mnthArrPtrn)) {
    if ($needToRestart) {
        reset($mnthArrPtrn);
    }
}

查看更多here