我试图以递归方式创建一个树的数组,但它显示了一个冗余错误,代码是
private function printChildQuestions($parentid, $level=0) {
$categorias = Categoria::model()->findAll("id_pai =".$parentid );
foreach($categorias as $c){
$space = str_repeat(' -    ', $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
答案 0 :(得分:0)
如果在第一层(级别0)中你得到了重复,则第一行$categorias = Categoria::model()->findAll("id_pai =".$parentid );
将被指责。对于parentid = 0,它会给你重复。