Título: imprimir arreglos multidimencionales...!!
Publicado por: 01munrra en 29 Abril 2012, 06:07 am
saludos!. les comento: tengo este arreglo formado a pie: "id1" => "01", "nombre" => "Alberto", "id" => "04", "nombre" => "jeferson", ), "id" => "05", "nombre" => "Zaida", ), ), ), "id" => "02", "nombre" => "Gerson", ), "id" => "03", "nombre" => "Zaida", ) );
y lo mando a mostrar coni: echo "<pre>"; echo "</pre>";
y imprime: ( ( [id1] => 01 [nombre] => Alberto ( ( [id] => 04 [nombre] => jeferson ) ( [id] => 05 [nombre] => Zaida ) ) ) ( [id] => 02 [nombre] => Gerson ) ( [id] => 03 [nombre] => Zaida ) )
pero ahora quisiera imprimirlo de manera normal, como lo hacia? hice esto: foreach($array as $arreglo) { echo '' .$arreglo['id']. ' ' .$arreglo['nombre']. ' ' .$arreglo['Hijos']['id']. '<br>'; }
pero no imprime bien, hace esto: Alberto 02 Gerson 03 Zaida
y pues mi idea seria algo haci 01 01 alberto 04 jeferson 05 zaida 02 Gerson 03 zaida
esto lo hice a pie... si notan es como armar un arbol, donde cada persona tiene un hijo... mi pregunta como podria hacer para que me imprima haci, o que estoy haciendo mal??
Título: Re: imprimir arreglos multidimencionales...!!
Publicado por: _teiki en 30 Abril 2012, 19:10 pm
"id1" => "01", "nombre" => "Alberto",
En primer lugar tienes id1 por eso no te imprime la id. Para imprimirlos como tu quieres deberías de utilizar 2 foreach de la siguiente forma: foreach($array as $arreglo) { echo '' .$arreglo['id']. ' ' .$arreglo['nombre']. '<br>'; if( isset( $arreglo['Hijos'] ) ) foreach($arreglo['Hijos'] as $hijo) echo ' ' .$hijo['id']. ' ' .$hijo['nombre']. '<br>'; }
Saludos.
Título: Re: imprimir arreglos multidimencionales...!!
Publicado por: 01munrra en 2 Mayo 2012, 01:01 am
si funciona gracias!!!.... ahora tengo que tratarlo de hacer de la siguiente forma,,, que pasaria si tengo 3 hijos principales, estos tienen cada uno 2 hijos y estos hijos tienen un hijo cada uno... algo haci: ( ( [id] => 01 [nombre] => Alberto ( ( [id] => 04 [nombre] => jeferson ( [id] => 03 [nombre] => Jossue ) ) ( [id] => 05 [nombre] => Zaida ( [id] => 02 [nombre] => andreina ) ) ) ) ( [id] => 02 [nombre] => Gerson ( ( [id] => 05 [nombre] => cacilia ( [id] => 02 [nombre] => oscar ) ) ( [id] => 09 [nombre] => fulgencio ( [id] => 07 [nombre] => andrea ) ) ) ) ( [id] => 03 [nombre] => Zaida ( ( [id] => 01 [nombre] => antony ( [id] => 04 [nombre] => albert ) ) ( [id] => 08 [nombre] => andres ( [id] => 10 [nombre] => gregori ) ) ) ) )
hice esto: foreach($array as $arreglo) { echo '' .$arreglo['id']. ' ' .$arreglo['nombre']. '<br>'; foreach($arreglo['Hijos'] as $hijo) echo str_repeat(' ',2).$hijo['id']. ' ' .$hijo['nombre']. '<br>'; if( is_array( $arreglo['Hijos']['Hijos'] ) ) foreach($arreglo['Hijos']['Hijos'] as $hijo) echo str_repeat(' ',4).$hijo['id']. ' ' .$hijo['nombre']. '<br>'; }
pero no imprime la de adentro, los hjos del 3er nivel
Título: Re: imprimir arreglos multidimencionales...!!
Publicado por: s00rk en 2 Mayo 2012, 04:53 am
Como son Hijos de 3 nivel, deben estar dentro del segundo nivel, lo cual tu lo pides desde el 1 porque no utilizas llaves Bueno podria ser asi supongo aunque no lo he provado, ahi te puedes dar cuenta que a los hijos del 2 nivel les puse Hijo y a los del 3 nivel hijo, por lo que asi podria ser posible hacerlo. foreach($array as $arreglo) { echo '' .$arreglo['id']. ' ' .$arreglo['nombre']. '<br>'; foreach($arreglo['Hijos'] as $Hijo) { echo str_repeat(' ',2).$Hijo['id']. ' ' .$Hijo['nombre']. '<br>'; foreach($Hijo['Hijos'] as $hijo) echo str_repeat(' ',4).$hijo['id']. ' ' .$hijo['nombre']. '<br>'; } }
Título: Re: imprimir arreglos multidimencionales...!!
Publicado por: 01munrra en 2 Mayo 2012, 15:03 pm
miren esta solucion: imaginense este arreglo multidimencional. "H0", "H1", "H2" ) ) ), "Q0", "Q1" ) ), "E0", "E0.1" ), "E1" ), "R0", "R1", "R1.0", "R1.1", "R1.1.0", "R1.1.1" ), "R1.2" ), ) );
y con esta funcion recursiva te permite mostrar todo el contenido del arreglo sin importar su longitud de profundidad.. function mostrar($arreglo,$nivel) { for($i = 0; $i <count($arreglo); $i++) { $parte = $arreglo[$i]; { mostrar($parte,$nivel+4); } else { } } }
y es mejor puesto que sirve para cualquier algoritmo,,,,, gracias!,, por prestar atencion a mi duda y pues esta es una buena solucion.... ;D
|