ツリーの配列を再帰的に作成しようとしていますが、冗長なエラーが表示されています。コードは次のとおりです
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