Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
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. function recursive_filhos($obj)
  4. {
  5. // Verifica se a função get_filhos do TRecord retorna vazio. Se retornar vazio é porque o obj não tem filhos
  6. if (!empty($obj->filhos))
  7. {
  8. foreach ($obj->filhos as $filho)
  9. {
  10. recursive_filhos($filho); // Se o obj tiver filhos ele retorna para a função recursiva
  11. }
  12. } else if (!is_null($obj)) {
  13. echo 'Filho: '.$obj->cod_item.' - '.$obj->nome.' ('.$obj->assunto->just_es_1grau.')<br>';
  14. return $filhos[$obj->cod_item] = $obj->nome;
  15. }
  16. }
  17. $var = recursive_filhos($item);
  18. var_dump($filhos); // Está retornando um array vazio
  19. var_dump($var); // Está retornando um array vazio
  20. ?>


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. return $this->filhos;
  8. }
  9. ?>


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?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (0)