重新启动PHP循环

重新启动PHP循环,php,foreach,while-loop,reset,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($prevCa

我有这段代码

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'];
}
foreach($mnthArrPtrn as$m=>mn)
{   
如果(!isset($catName)){
$catVals=array();
$prevCat=$catName=$PNTCHRTKRY[0]['CAT']['categoryname'];
$pntVals.='{name:'.$catName',数据:[';
}else if($prevCat!=$catName){
$prevCat=$catName;
$catVals=array();
$pntVals.='{name:'.$catName',数据:[';
}     
foreach($pntChrtQry作为$key=>$val){
$catName=$val['CAT']['categoryname'];
如果($prevCat!=$catName){
继续2;
}
回音“
$m::”.$m; 回显“
$mn::”.$mn; 回显“
$val::”.$val[0]['MNTH']; 如果($m==$val[0]['MNTH']| |$mn==$val[0]['MNTH'])){ $catVals[]=$val[0]['total']; } } pr($CATVAL); 如果(!isset($catName)){ $pntVals.=']}'; } $catName=$val['CAT']['categoryname']; }
第一个循环迭代一个月数组,该数组作为键值对连接。 我在这里做的是获取一个新的catName,我继续内部循环,但同时我想重新启动循环1,$prevCat,$catName仍然保留它们的值。 这可能吗?对不起,如果这是个愚蠢的问题


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

类似的内容将允许您任意重新启动循环:

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

请参阅更多信息。

类似的内容将允许您任意重新启动循环:

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


查看更多信息。

a)给变量起个好名字,比如$month、$months、$category、$values等等。b)将其分解为多个清晰的函数,这段代码让人疯狂。c)如果要将PHP数组转换为JSON数组,请使用本机函数。没有办法重置extrnl循环吗?如果需要重新启动循环,请使用
同时
每个
一起,使用
重置
返回数组的开始。不能重新启动
foreach
,否。可以在continue语句的正上方执行此操作吗?我想重新启动extrnlone@techie_28首先在PHP中形成所需的数组,然后使用json_encode。(继续努力提高你的英语水平,这将对你大有帮助!)给你的变量起个好名字,比如$month、$months、$category、$values等等。b)把它分解成多个清晰的函数,这段代码会让人抓狂。c)如果你想将PHP数组转换成JSON数组,请使用本机函数。没有办法重置extrnl循环吗?如果你需要重新启动循环,请使用
while
each
结合使用,使用
reset
返回数组的开始。不能重新启动
foreach
,否。可以在continue语句的正上方执行此操作吗?我想重新启动extrnlone@techie_28首先在PHP中形成所需的数组,然后使用json_encode。(继续努力提高你的英语水平,这会对你有很大帮助!)我在外部循环中有一个嵌套循环..如果继续,我想重新启动..这会起作用吗/是的,我想是的。将外部循环换成我建议的循环,然后在执行
continue 2
之前重置数组。也许你的
continue
应该在内部循环的末尾?我不知道,因为我不知道alg算法,也不是代码的目的。这对@halfer没有太大帮助,我尝试了外部foreach,而(list($m,$mn)=each($mnthArrPtrn))嗯,这就是你必须进行一些调试的地方。如果你回答“那没有太大帮助”,我可能需要指出(一般来说),除非你能详细解释它是如何起作用的,否则我没什么可说的。否则我不得不猜测,这不是很有用!
:)
我在外部循环中有一个嵌套的循环..如果继续,我想重新启动..行吗/是的,我想可以。将外部循环换成我建议的循环,然后在执行
continue 2
之前重置数组。也许你的
continue
应该在内部循环的末尾?我不知道,因为我不知道算法,也不是代码的目的。这对@halfer没有太大帮助。我尝试了外部foreach,而(list($m,$mn)=each($mnthArrPtrn))嗯,这就是你必须做一些调试的地方。如果你回答“那没有太大帮助”,可能值得我指出(一般来说),除非你能详细解释它是如何起作用的,否则我没什么可说的。否则我不得不猜测,这不是很有用!
:)