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:
Função get_filhos() no TRecord
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?
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:
- <?php
- $item = new Itens(899); // Carrega o 1º objeto da hierarquia que contem o cod_item_pai == null
- function recursive_filhos($obj)
- {
- // Verifica se a função get_filhos do TRecord retorna vazio. Se retornar vazio é porque o obj não tem filhos
- if (!empty($obj->filhos))
- {
- foreach ($obj->filhos as $filho)
- {
- recursive_filhos($filho); // Se o obj tiver filhos ele retorna para a função recursiva
- }
- } else if (!is_null($obj)) {
- echo 'Filho: '.$obj->cod_item.' - '.$obj->nome.' ('.$obj->assunto->just_es_1grau.')<br>';
- return $filhos[$obj->cod_item] = $obj->nome;
- }
- }
- $var = recursive_filhos($item);
- var_dump($filhos); // Está retornando um array vazio
- var_dump($var); // Está retornando um array vazio
- ?>
Função get_filhos() no TRecord
- <?php
- public function get_filhos()
- {
- $criteria = new TCriteria;
- $criteria->add( new TFilter('cod_item_pai', '=', $this->cod_item) );
- $this->filhos = Itens::getObjects($criteria);
- return $this->filhos;
- }
- ?>
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?