Foros del Web » Programando para Internet » PHP »

PHP OO Obtener dato con recursividad

Estas en el tema de Obtener dato con recursividad en el foro de PHP en Foros del Web. Hola. Intento obtener un dato pero creo que nunca lo obtendré puesto que el ciclo de la recursividad lo uso mal. Código PHP:      function  ...
  #1 (permalink)  
Antiguo 04/07/2017, 09:16
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Obtener dato con recursividad

Hola.
Intento obtener un dato pero creo que nunca lo obtendré puesto que el ciclo de la recursividad lo uso mal.
Código PHP:
    function getNivelCero($uni_id){
        
$sql "select uni_parentid,uni_id from tab_unidad where uni_id = ".$uni_id;
        
$result pg_query($this->connect(), $sql);
        
$row pg_fetch_assoc($result);
        if(
$row['uni_parentid'] != 0){
            
$this->getNivelCero($row['uni_parentid']);
        } else {
            return 
$row['uni_id'];
        }
        return 
$uni_id;
    } 
La funcion anterior me debería devolver del hijo al primer padre, es decir, puede tener 5 niveles, y siempre debería devolverme el primer nivel. pero no lo hace, creo que el problema está en el return, leí por ahí por que puedo usar por parámetro o función, pero la verdad no entendí.

Una colaboración por favor.
  #2 (permalink)  
Antiguo 04/07/2017, 09:51
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Obtener dato con recursividad

Cual vas a retornar???

Este: return $row['uni_id'];
ó este: return $uni_id;

en todo caso el codigo se va a retornar es si se cunple la condicion, ahora si lo que quieres es la lista, puedes ayudarte copn una variable de sesionde esta manera

Código PHP:
Ver original
  1. function getNivelCero($uni_id){
  2. $_SESSION['lista'] = array();
  3.         $sql = "select uni_parentid,uni_id from tab_unidad where uni_id = ".$uni_id;
  4.         $result = pg_query($this->connect(), $sql);
  5.         $row = pg_fetch_assoc($result);
  6.         if($row['uni_parentid'] != 0){
  7.             array_push($_SESSION['lista'], $row['dato']);
  8.             $this->getNivelCero($row['uni_parentid']);
  9.         } else {
  10.             return $_SESSION['lista'];
  11.         }
  12.     }
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 04/07/2017 a las 10:01
  #3 (permalink)  
Antiguo 05/07/2017, 09:52
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Obtener dato con recursividad

Ya existen formas de almacenar jerarquía en una base de datos relacional para recupera la información mediante consultas sin recurrir a la recursividad del lado del lenguaje lo que estas haciendo va a impactar en el rendimiento cuando tengas varios niveles en tu jerarquía
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 05/07/2017, 09:54
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Obtener dato con recursividad

Cita:
Iniciado por hhs Ver Mensaje
Ya existen formas de almacenar jerarquía en una base de datos relacional para recupera la información mediante consultas sin recurrir a la recursividad del lado del lenguaje lo que estas haciendo va a impactar en el rendimiento cuando tengas varios niveles en tu jerarquía
Cuales serian mas o menos, me interesa el tema. Saludos
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 05/07/2017, 12:43
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Obtener dato con recursividad

Busca información sobre Adjacency List, Closure Table y Materialized Path son los modelos mas comunes en una base de datos relacional, pero para manejar jerarquías lo mas adecuado es usar una base de datos de grafos como Neo4j
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: php+, php+arrays
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:48.