Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Establecer el nivel de cada arreglo

Estas en el tema de Establecer el nivel de cada arreglo en el foro de PHP en Foros del Web. Hola, tengo una array con esta estructura: Código: [1] => Array ( [10] => Array ( [id] => 10 [name] => Administradores [parent_id] => 2 ...
  #1 (permalink)  
Antiguo 25/08/2015, 19:19
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Establecer el nivel de cada arreglo

Hola, tengo una array con esta estructura:

Código:
   [1] => Array
        (
            [10] => Array
                (
                    [id] => 10
                    [name] => Administradores
                    [parent_id] => 2
                    [level] => 0
                    [children] => Array
                        (
                        )

                )

            [34] => Array
                (
                    [id] => 34
                    [name] => Proyectos
                    [parent_id] => 2
                    [level] => 0
                    [children] => Array
                        (
                            [35] => Array
                                (
                                    [id] => 35
                                    [name] => [Front]
                                    [parent_id] => 34
                                    [level] => 0
                                    [children] => Array
                                        (
                                        )

                                )

                            [44] => Array
                                (
                                    [id] => 44
                                    [name] => [Call Center]
                                    [parent_id] => 34
                                    [level] => 0
                                    [children] => Array
                                        (
                                        )

                                )

                            [45] => Array
                                (
                                    [id] => 45
                                    [name] => [Editor Pascal para el micro 8051]
                                    [parent_id] => 34
                                    [level] => 0
                                    [children] => Array
                                        (
                                        )

                                )

                            [51] => Array
                                (
                                    [id] => 51
                                    [name] => [Sistema de Control de Deudas]
                                    [parent_id] => 34
                                    [level] => 0
                                    [children] => Array
                                        (
                                        )

                                )

                            [60] => Array
                                (
                                    [id] => 60
                                    [name] => [Mapa de visitantes]
                                    [parent_id] => 34
                                    [level] => 0
                                    [children] => Array
                                        (
                                        )

                                )

                        )

                )
)
mi deseo es establecer en el elemento [level] la posicion en que esta en el array de manera recursiva, el resultado esperado es el siguiente, todos los padres tendran un level = 0 y los hijos, nietos, biznietos es donde se debe obtener la posicion del array en el elemento [level]

Código:
padre 1
   [level] => 0,
   [children] =>
          hijo 1 =>
             [level] => 1, 
          hijo 2 =>
             [level] => 2,
             [children] =>
                 subhijo 1 =>
                    [level] => 1,
                 subhijo 2 =>
                    [level] => 2,
          hijo 3 =>
             [level] => 3,
padre 2
   [level] => 0,
   [children] =>
          hijo 1 =>
             [level] => 1, 
          hijo 2 =>
             [level] => 2,
             [children] =>
                 subhijo 1 =>
                    [level] => 1,
                 subhijo 2 =>
                    [level] => 2,
          hijo 3 =>
             [level] => 3,
Y así sucesivamente, espero haberme explicado lo más entendible.

Saludos.
  #2 (permalink)  
Antiguo 29/08/2015, 14:10
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Establecer el nivel de cada arreglo

Me respondo:

Código PHP:
Ver original
  1. function asignarNivel($array, $level=0) {
  2.     foreach($array as $key => $subarray) {
  3.         $array[$key]['children'] = assignLevels($subarray['children'], $level+1);
  4.         $array[$key]['level'] = $level;
  5.     }
  6.     return $array;
  7.  
  8. }

Solo debo pasar mi arreglo con esa función.

Saludos.

Etiquetas: arreglo, cada, establecer, nivel
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 04:43.