Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Função recursiva com vários níveis Boa noite, pessoal. Estou precisando de uma ajuda com uma estrutura de dados que já está me dando dor de cabeça para resolver. É o seguinte. Tenho um banco de dados que possui diversos níveis (até 5 níveis) e preciso carregar os id's e nomes dos elementos finais da hierarquia para popular um TCombo. Fiz uma função recursiva e utilizando o comando echo a impressão...
AA
Função recursiva com vários níveis  
Boa noite, pessoal.

Estou precisando de uma ajuda com uma estrutura de dados que já está me dando dor de cabeça para resolver.

É o seguinte. Tenho um banco de dados que possui diversos níveis (até 5 níveis) e preciso carregar os id's e nomes dos elementos finais da hierarquia para popular um TCombo.

Fiz uma função recursiva e utilizando o comando echo
a impressão é justamente como eu quero, mas não consegui jogar esses dados no retorno da função. Quando tento o retorno sempre vem vazio. Alguém pode dá um luz aí?

A função é essa:
  1. <?php
  2.         $item = new Itens(899); // Carrega o 1º objeto da hierarquia que contem o cod_item_pai == null   
  3.         
  4.         function recursive_filhos($obj)
  5.         {
  6.             // Verifica se a função get_filhos do TRecord retorna vazio. Se retornar vazio é porque o obj não tem filhos            
  7.             if (!empty($obj->filhos))
  8.             {
  9.                 foreach ($obj->filhos as $filho)
  10.                 {
  11.                     recursive_filhos($filho); // Se o obj tiver filhos ele retorna para a função recursiva
  12.                 }
  13.             } else if (!is_null($obj)) {
  14.                 echo 'Filho: '.$obj->cod_item.' - '.$obj->nome.' ('.$obj->assunto->just_es_1grau.')<br>';
  15.                 return $filhos[$obj->cod_item] = $obj->nome;                    
  16.             }            
  17.               
  18.         }
  19.         
  20.         $var recursive_filhos($item);
  21.         
  22.         var_dump($filhos); // Está retornando um array vazio
  23.         var_dump($var); // Está retornando um array vazio
  24. ?>


Função get_filhos() no TRecord
  1. <?php
  2.     public function get_filhos()
  3.     {
  4.         $criteria = new TCriteria;
  5.         $criteria->add( new TFilter('cod_item_pai''='$this->cod_item) );
  6.         $this->filhos Itens::getObjects($criteria); 
  7.         
  8.         return $this->filhos;
  9.     }
  10. ?>


Como eu disse, com o comando echo funciona exatamente como esperado (imagem em anexo), mas os array retornam vazios.

Alguém visualiza o problema da função e pode ajudar, por favor?

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (0)