2013-02-03 96 views
0

我有這樣一段代碼重新啓動一個PHP循環

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語句並使用重置,但它沒有幫助我。

+0

a)給你的變量,諸如$ month,$ months,$ category,$ values等的好名字。b)將這個分解爲多個清零函數,這段代碼使人瘋狂地閱讀。 c)如果您想將PHP數組轉換爲JSON數組,請使用原生函數。 – markus

+0

沒有一種方法來重置extrnl循環? –

+0

如果您需要重新啓動循環,請將'while'與'each'一起使用,並使用'reset'返回到數組的起始處。你不能重新啓動'foreach',否。 – halfer

回答

3

像這樣的東西可以讓你隨意重新啓動循環:

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

查看更多here

+0

我有一個嵌套循環裏面的外部one..And在那繼續我想重新啓動...將工作/ –

+0

是的,我認爲是的。交換我建議的外部循環,並在執行'continue 2'之前'重置'數組。 – halfer

+0

看到這些代碼中的回聲,當我嘗試這樣的代碼時,它們變爲空白 –