Foros del Web » Programando para Internet » PHP »

Retornar arreglo de tres niveles

Estas en el tema de Retornar arreglo de tres niveles en el foro de PHP en Foros del Web. Hola amigos de ForosdelWeb otra vez me paso yo por aquí molestándolos. Me surge la necesidad de retornar una consulta con arreglo de tres niveles. ...
  #1 (permalink)  
Antiguo 10/04/2012, 16:45
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Retornar arreglo de tres niveles

Hola amigos de ForosdelWeb otra vez me paso yo por aquí molestándolos.

Me surge la necesidad de retornar una consulta con arreglo de tres niveles. Es decir Menus -> Submenus -> SubSubmenus, y puedan que se presenten mas sub niveles, he intentado de mil maneras agregarle al arreglo Submenus el arreglo de SubSubmenus pero no he podido.

Lo que tengo es:

Código PHP:
//Aqui va la consulta, los datos los devuelve bien, lo he probado en Navicat y phpMyAdmin

while($row $ejecutaConsulta->fetch(PDO::FETCH_ASSOC)){
            
$estudiante[$row['codijorn']]['codijorn']   = $row['codijorn'];
            
$estudiante[$row['codijorn']]['nombjorn']   = $row['nombjorn'];
            
$estudiante[$row['codijorn']]['niveles'][$row['codinive']]   = array('codinive' => $row['codinive'], 'nombnive' => $row['nombnive']);
            
$estudiante[$row['codijorn']][$row['codinive']]['grupos'][$row['codigrup']]   = array('codigrup' => $row['codigrup'], 'nombgrup' => $row['nombgrup']);
        } 
Al hacer print_r obtengo:

Código PHP:
Array
(
    [
datos] => Array
        (
            [
1] => Array
                (
                    [
codijorn] => 1
                    
[nombjorn] => COMPLETA
                    
[niveles] => Array
                        (
                            [
1] => Array
                                (
                                    [
codinive] => 1
                                    
[nombnive] => TRANSICION O PRESCOLAR
                                
)

                            [
2] => Array
                                (
                                    [
codinive] => 2
                                    
[nombnive] => BASICA PRIMARIA
                                
)
                        )

                    [
1] => Array
                        (
                            [
grupos] => Array
                                (
                                    [
1] => Array
                                        (
                                            [
codigrup] => 1
                                            
[nombgrup] => GRADO 0
                                        
)
                                )
                        )

                    [
2] => Array
                        (
                            [
grupos] => Array
                                (
                                    [
2] => Array
                                        (
                                            [
codigrup] => 2
                                            
[nombgrup] => PRIMERO
                                        
)

                                    [
3] => Array
                                        (
                                            [
codigrup] => 3
                                            
[nombgrup] => SEGUNDO
                                        
)

                                    [
4] => Array
                                        (
                                            [
codigrup] => 4
                                            
[nombgrup] => TERCERO
                                        
)

                                    [
5] => Array
                                        (
                                            [
codigrup] => 5
                                            
[nombgrup] => CUARTO
                                        
)

                                    [
6] => Array
                                        (
                                            [
codigrup] => 6
                                            
[nombgrup] => QUINTO
                                        
)
                                )
                        )
                )
        )

Pero el arreglo

Código PHP:
[1] => Array
                        (
                            [
grupos] => Array
                                (
                                    [
1] => Array
                                        (
                                            [
codigrup] => 1
                                            
[nombgrup] => GRADO 0
                                        
)
                                )
                        ) 
Deberia estar dentro de:

Código PHP:
[1] => Array
                                (
                                    [
codinive] => 1
                                    
[nombnive] => TRANSICION O PRESCOLAR
                                

Y el arreglo

Código PHP:
[2] => Array
                        (
                            [
grupos] => Array
                                (
                                    [
2] => Array
                                        (
                                            [
codigrup] => 2
                                            
[nombgrup] => PRIMERO
                                        
)

                                    [
3] => Array
                                        (
                                            [
codigrup] => 3
                                            
[nombgrup] => SEGUNDO
                                        
)

                                    [
4] => Array
                                        (
                                            [
codigrup] => 4
                                            
[nombgrup] => TERCERO
                                        
)

                                    [
5] => Array
                                        (
                                            [
codigrup] => 5
                                            
[nombgrup] => CUARTO
                                        
)

                                    [
6] => Array
                                        (
                                            [
codigrup] => 6
                                            
[nombgrup] => QUINTO
                                        
)

                                )

                        ) 
Deberia estar dentro de

Código PHP:
[2] => Array
                                (
                                    [
codinive] => 2
                                    
[nombnive] => BASICA PRIMARIA
                                

El arreglo jornadas tiene dentro el arreglo niveles esto esta bien, ahora, el arreglo niveles deberia tener dentro el arreglo grupos pero no he logrado hacerlo, he intentado de mil maneras.

El metodo funciona para Menus -> Submenus (Ya lo he probado).

No espero que me hagan todo, solo quiero que me ayuden a como vincular el tercer arreglo sobre el segundo...

Gracias.
__________________
Aprendiendo!!!
  #2 (permalink)  
Antiguo 10/04/2012, 22:18
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Retornar arreglo de tres niveles

Tienes que aplicar recursividad, es un tema un poco extenso pero ahí tienes un ejemplo con base de datos: http://barcoavenus.blog.com/2011/01/...ecursivamente/
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 12/04/2012, 15:23
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Retornar arreglo de tres niveles

Existe la manera de retornarlos agrupados, como lo estoy haciendo?
__________________
Aprendiendo!!!

Etiquetas: niveles, retornar, tres, arreglos
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 06:12.