From: Luis Martin-Santos (
luis .en. webalianza.com)
Date: Wed Mar 03 2004 - 20:20:24 CET
Me equivoqué al realizar el envio y además creo
que puede ser util para el
resto, asi k lo reenvio
---------- Mensaje reenviado ----------
Subject: Re: [PHP-ES] aayuda
Date: Wednesday 03 March 2004 20:18
From: Luis Martin-Santos <
luis .en. webalianza.com>
To:
irantzu .en. dosalcubo.net
Lo que necesitas es una función recursiva, aunque, de
todas maneras creo que
tienes el array mal estructurado; Yo te propongo lo siguiente
:
ejemplo:
para un array de este tipo:
$arr[1]["titulo"] ="Introduccion";
$arr[1]["hijos"][1]["titulo"] = "Primero de
Introduccion";
$arr[1]["hijos"][1]["hijos"][1]["titulo"] = "Hijo del de
arriba";
$arr[1]["hijos"][2]["titulo"] = "Segundo de
Introduccion";
$arr[1]["hijos"][2]["hijos"][1]["titulo"] = "Hijo de segundo
de";
$arr[2]["titulo"] = "Segundo Parrafo";
$arr[2]["hijos"][1]["titulo"] = "Hijo de Segundo Parrafo";
de manera que cada elemento del array pueda tener
a su vez hijos y titulo, manteniendo una estructura
constante
en la que los índices del array mantengan su
posición
jerárquica. Esta estructura puede parecer un poco
confusa, pero verás porqué
la hacemos así:
Una función recursiva es aquella que se llama a si
misma hasta que encuentra
un punto muerto; Te muestro el ejemplo:
<?php
$arr[1]["titulo"] ="Introduccion";
$arr[1]["hijos"][1]["titulo"] = "Primero de
Introduccion";
$arr[1]["hijos"][1]["hijos"][1]["titulo"] = "Hijo del de
arriba";
$arr[1]["hijos"][2]["titulo"] = "Segundo de
Introduccion";
$arr[1]["hijos"][2]["hijos"][1]["titulo"] = "Hijo de segundo
de";
$arr[2]["titulo"] = "Segundo Parrafo";
$arr[2]["hijos"][1]["titulo"] = "Hijo de Segundo Parrafo";
function VerCapitulos($array,$is_root=1,$treshold=0,
$base="")
{
for
($i=0;$i<$treshold;$i++)
$c.=" ";
$treshold++;
for
($i=1;$i<count($array)+1; $i++)
{
$c
.= ($base ? $base ."." : "").$i."
".$array[$i]["titulo"]."<br />";
if
(is_array($array[$i]["hijos"]))
$c
.= VerCapitulos ($array[$i]["hijos"] ,0, $treshold , ($base
?
$base .".".$i : $i)) ;
}
return
$c;
}
echo VerCapitulos($arr);
Si miras la función , cicla por cada elemento del
array que le pasas por la
variable $array y muestra su titulo, a continuación
comprueba si
$array["hijos"] es a su vez un array (lo cual significa que
hay más hijos) y
si lo hay, se llama a si misma indicando como array en el que
trabajar el
trozo del array que contiene a los hijos (OJO no el array
completo)
Un saludo.
El Wednesday 03 March 2004 19:00, irantzu
escribió:
> Hola a tod .en. s!!!!
>
> Mi problema es el siguiente, tengo
una tabla con n columnas,
> estructurada de la siguiente
manera.
>
> *num* *c1* *c2* *c3*
> 1 1 1.1 1.1.2
> 2 2 2.1
> 3 1 1.2
> 4 4 4.1
> 5 3 3.1
> 6 1 1.1 1.1.1
> 7 1 1.1 1.1.3
> 8 2 2.2
> 9 3 3.2 3.2.1
> 10 4 4.2
> 11 3 3.2 3.2.2
>
>
>
> y los resultados deben aparecer de
la siguiente manera
>
>
>
> 1
> 1.1
> 1.1.1
> 1.1.2
> 1.1.3
> 2
> 2.1
> 2.2
> 3
> 3.1
> 3.2
> 3.2.1
> 3.2.2
> 4
> 4.1
> 4.2
>
>
> como no se exactamente cuantos
campos tengo, no logro que me muestre lo
> que necesito.
>
> Si alguien ha hecho algo parecido
o puede darme alguna pista se lo
> agradeceré
muchísimo.
>
> Muchas gracias
>
> Irantzu
-------------------------------------------------------
-- PHP Spanish Localization Talk Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
This archive was generated by hypermail 2.1.7 : Fri May 14 2004 - 16:04:33 CEST