PHP - Límites de bucle for

   
Vista:

Límites de bucle for

Publicado por David (3 intervenciones) el 17/07/2012 18:00:23
Buenas,
Tengo un bucle for que me trae de cabeza...

La situación es la siguiente: tengo dos arrays (main e hijo). En main hay ítems independientes, mientras que en hijo hay ítems que dependen de main.

Lo que necesito es recorrer ambos arrays para hacer una lista dinámica. El algoritmo que tengo hecho es el siguiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
for($i=0;$i<count($main);$i++){
			$curr = 0;
			$tree = array();
			$tree[$curr++] = $main[$i]->id;
 
			//mostramos cosas
 
			for($j=$curr;$j>=0;$j--){
				for($k=0;$k<count($hijo);$k++){
					if($hijo[$k]->father == $tree[$j]){
						for($l=0;$l<count($puts);$l++){
							if($puts[$l] == $hijo[$k]->id){
								break 2;
							}
						}
 
						$tree[$curr++] = $hijo[$k]->id;
						$puts[$pCon++] = $hijo[$k]->id;
 
						//muestras cosas
 
						$j=$curr-1;
						break;
					}
				}
			}
		}


pero no tengo manera de arreglarlo!

para que sirva un poco de orientación, lo que necesito hacer es algo similar al sistema de respuesta de aqui, es decir, una respuesta cuelga de otra (en mi caso sería un ítem hijo que depende de main)

alguna ayuda??

gracias desde ya
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Límites de bucle for

Publicado por xve (5525 intervenciones) el 17/07/2012 22:26:46
Hola David, nos puedes mostrar el contenido de dichos arrays?? para poder entenderlo mejor y poder probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Límites de bucle for

Publicado por David (3 intervenciones) el 17/07/2012 22:48:42
El ejemplo que estoy intentando plasmar, se basa en estos dos arrays:

ob1: id=1, father=0
ob2: id=1, father=1
ob3: id=1, father=0
ob4: id=1, father=2
ob5: id=1, father=2
ob6: id=1, father=1
ob7: id=1, father=3
ob8: id=1, father= 9
ob9: id=1, father=0

de esta manera, siguiendo la idea que quiero plasmar, debería mostrar una lista así:

1
2
3
4
5
6
7
8
objeto 1
        objeto 2
                     objeto 4
                     objeto 5
         objeto 6
 objeto 3
        objeto 7
 objeto 9


los objetos tienen simplemente id(int) y father(int)

Gracias por responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Límites de bucle for

Publicado por xve (5525 intervenciones) el 18/07/2012 08:02:21
Hola David, a mi modo de ver, creo que la manera de solucionar esto, es mediante un función recursiva... de esta manera te quedara todo mas sencillo...

Si me muestras el array real en formato php, te preparo la función recursiva que te lo haga, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Límites de bucle for

Publicado por David (3 intervenciones) el 18/07/2012 08:19:46
Supongo que lo que me pides es algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Main:
 
Array
(
    [0] => Item Object
        (
            [father] =>
            [id] => 43
            [user] => 1
        )
 
    [1] => ItemObject
        (
            [father] =>
            [id] => 44
            [user] => 1
        )
 
    [2] => Item Object
        (
            [father] =>
            [id] => 46
            [user] => 1
        )
 
    [3] => Item Object
        (
            [father] =>
            [id] => 49
            [user] => 1
        )
 
)
 
Hijo:
 
Array
(
    [0] => Item Object
        (
            [father] => 46
            [id] => 48
            [user] => 1
        )
 
    [1] => Item Object
        (
            [father] => 48
            [id] => 50
            [user] => 1
        )
 
    [2] => Item Object
        (
            [father] => 48
            [id] => 51
            [user] => 1
        )
 
    [3] => Item Object
        (
            [father] => 46
            [id] => 52
            [user] => 1
        )
 
)
 
cMaker:
 
Array
(
    [0] => Searched Object
        (
            [id] => 1
        )
 
)


el array cMaker contiene datos relacionados con el user del Item. Antes no lo puse porque esta parte no es relevante para lo que quiero decir (me refiero a que relacionar el ítem con el Searched está hecho en una función y no me preocupo por ello...)

Gracias por responder!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar