0

我有这段代码

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,$catName 重新启动循环 1 仍然保留它们的值。这可能吗?对不起,如果这是一个愚蠢的问题。

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

4

1 回答 1

4

这样的事情将允许您任意重新启动循环:

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

在这里查看更多。

于 2013-02-03T12:06:00.970 回答