entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como puedo hacer una lista de números a partir de un árbol PHP

Tengo un arreglo multidimensional, el cual no tiene un largo fijo, puede tener tantos subarreglos como quiera, y quiero otorgar un numero a cada item del arreglo, es asi como:

Arreglo.

Array(
"1" => "A",
"2" => "B",
"3" => Array(
   "1" => B.1,
   "2" => B.2,
   "3" => Array(
         "1" => "B2.1",
         "2" => "B2.2",
         )
     ) 
);

La idea es tener lo siguiente:

1. A
2. B
2.1 B.1
2.2 B.2
2.2.1 B.2.1
2.2.2 B.2.1

Puedo controlar que si un "padre" no tiene "hijos" o "subarreglos" y además que si un "hijo" no tiene más "hijos" o "subarreglos"

0voto

Leonardo-Tadei comentado

Hola,

no estoy seguro de entender lo que te hace falta:

  • tenés el vector armado y querés mostrarlo como en el ejemplo?
  • tenés el vector con los valores pero los índices no se corresponden y querés ponerle los índices?

Podrías poner un ejemplo de cual estructura estás partiendo y a qué estructura o visualización querés llegar?

2 Respuestas

0voto

scrntprcrz Puntos520

no te entiendo bien si los quieres presentar o meterlos en otro array pero lo que tienes que hacer seria una funcion recursiva que recorra el array y pregunte por acada item si es array, si este es un array llame a la misma funcion y si no es array presente y procese lo que tu quieras te dejo la abstraccion del problema prueba es super que facil con foreach y is_array

2votos

Leonardo-Tadei Puntos227320

Hola @dibustosb,
adivinando un poco lo que estás necesitando, creo que este código lo resuelve:

<?php
/* de este vector */
$a = Array(
"1" => "A",
"2" => "B",
"3" => Array(
   "1" => "B.1",
   "2" => "B.2",
   "3" => Array(
         "1" => "B2.1",
         "2" => "B2.2",
         )
     ) 
);

/* llegar a esto
1. A
2. B
2.1 B.1
2.2 B.2
2.2.1 B.2.1
2.2.2 B.2.1
*/

function formatearArray($tree, $nivel='') {
    $actual = '';;
    foreach ($tree as $k => $v) {
        if ( ! is_array($v) ) {
            print("$nivel$k. $v<br />");
            $actual = $k;
        } else {
            formatearArray($v, $nivel.$actual.'.');
        }
    }
}

formatearArray($a);

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta