为什么我的循环仅作用于桌子的一半?我不知道

时间:2019-06-10 13:20:52

标签: php loops

我想编写一个程序,该程序将从一个数组(混合的字符串和整数)组成2个数组(一个带有整数,第二个带有字符串)。我猜我的循环有问题,因为它似乎只能工作到桌子的一半。

Values: 
{ "pgroup": "blah", 
  "needs": [ 
        {"need": "blah"}, 
        {"need": "blah"}, 
        {"need": "blah"}
   ]
}

2 个答案:

答案 0 :(得分:1)

我相信您不应该在循环中取消设置($ tab [i]),在循环结束后我将取消设置$ tab。这可能会搞乱职位和您的价值。另外,我认为其他方法无法正确打开和关闭{}。

我会这样:

function check(&$tab,&$tabstr,&$tabint) {
    $tabint= array();
    $tabstr= array();
    for($i=0;$i<count($tab);$i++) {
        if(is_numeric($tab[$i])==1) {
           array_push($tabint, $tab[$i]);
        }
        else {
           array_push($tabstr, $tab[$i]);    
        }
    }
    unset($tab);
}

答案 1 :(得分:1)

此处未设置$tab变量时,count($tab)的值将更改,因此循环将制动。因此,将$ tab的计数分配给变量,然后检查,这是一个代码

function check(&$tab,&$tabstr,&$tabint){
    $length = count($tab);
    for($i=0;$i<$length;$i++){
        if(is_numeric($tab[$i])==1){
                $tabint[]=$tab[$i];
                unset($tab[$i]);
        }else{
                $tabstr[]=$tab[$i];
                 unset($tab[$i]);
        }
    }
}