重新启动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))嗯,这就是你必须做一些调试的地方。如果你回答“那没有太大帮助”,可能值得我指出(一般来说),除非你能详细解释它是如何起作用的,否则我没什么可说的。否则我不得不猜测,这不是很有用!:)