-1

我试图递归地创建一个树数组,但它向我显示了一个冗余错误,代码是

private function printChildQuestions($parentid, $level=0) {
    $categorias = Categoria::model()->findAll("id_pai =".$parentid );

        foreach($categorias as $c){

            $space = str_repeat(' -&nbsp &nbsp ', $level);

            $flag=0;
            foreach($c->produtos as $p){

                $GLOBALS['children'][] = array("data" => $p->nome,"metadata" => array( "id" => $p->id ) );

                $flag=1;    
            }
            if($flag == 1){
                $GLOBALS['arvore'][] = array("data" => $c->nome,"metadata" => array( "id" => $c->id ) ,"children" => $GLOBALS['children'] );
            }

            $GLOBALS['arvore'][] = array("data" => $c->nome,"metadata" => array( "id" => $c->id ) );

            unset($GLOBALS['children']);
            $this->printChildQuestions($c->id,$level+1);
        }

}

函数的调用是 $this->printChildQuestions(0);

它返回我这些值:

produtos       ---- ok 
  produto1     ---- ok 
produtos       ---- wrong line , repeated 1st line
subprodutos    ---- ok
  produto 2    ---- ok
subprodutos    ---- wrong line , repeated 4th line
subsubprodutos ---- ok
  produr 3     ---- ok
  produto 3.2  ---- ok
subsubprodutos ---- wrong line, repeated 7th line
produtos3.1    ---- ok
produto 2.2    ---- ok
produtos1.2    ---- ok

正确的是

produtos       ---- ok 
  produto1     ---- ok 
subprodutos    ---- ok
  produto 2    ---- ok
subsubprodutos ---- ok
  produr 3     ---- ok
  produto 3.2  ---- ok
produtos3.1    ---- ok
produto 2.2    ---- ok
produtos1.2    ---- ok
4

1 回答 1

0

如果在第一层(第 0 级)中你重复了第一行,那就$categorias = Categoria::model()->findAll("id_pai =".$parentid );应该归咎于第一行。对于 parentid = 0 它给你重复。

于 2012-09-27T21:41:18.753 回答