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 に答える