Foros del Web » Programando para Internet » PHP »

Recorrer array (o varios) combinando valores

Estas en el tema de Recorrer array (o varios) combinando valores en el foro de PHP en Foros del Web. Hola a todos. Tengo el siguiente array (ejemplo) el cual tengo que recorrer combinando los primeros niveles: Código PHP: [ propiedades ] =>  stdClass Object      ( ...
  #1 (permalink)  
Antiguo 30/06/2009, 06:10
fsk
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Recorrer array (o varios) combinando valores

Hola a todos.
Tengo el siguiente array (ejemplo) el cual tengo que recorrer combinando los primeros niveles:


Código PHP:
[propiedades] => stdClass Object
    
(
        [
0] => stdClass Object
                
(
                    [
id] => 16
                    
[nombre] => rellenable
                    
[datos] => Array
                        (
                                [
0] => stdClass Object
                                    
(
                                        [
valorReferencia] => 123
                                        
[valor] => asdf
                                    
)

                                [
1] => stdClass Object
                                    
(
                                        [
valorReferencia] => 234
                                        
[valor] => 234
                                    
)

                        )

                )

        [
1] => stdClass Object
                
(
                    [
id] => 17
                    
[nombre] => rellenable 2
                    
[datos] => Array
                        (
                                [
0] => stdClass Object
                                    
(
                                        [
valorReferencia] => 456
                                        
[valor] => 456
                                    
)

                        )

                )

        [
2] => stdClass Object
                
(
                    [
id] => 13
                    
[nombre] => no rellenable1
                    
[datos] => Array
                        (
                                [
0] => stdClass Object
                                    
(
                                        [
valorReferencia] => E56
                                        
[valor] => Rojo
                                    
)

                                [
1] => stdClass Object
                                    
(
                                        [
valorReferencia] => 4t6
                                        
[valor] => Verde
                                    
)

                        )

                )

        [
3] => stdClass Object
                
(
                    [
id] => 15
                    
[nombre] => no rellenable2
                    
[datos] => Array
                        (
                                [
0] => stdClass Object
                                    
(
                                        [
valorReferencia] => 8ju
                                        
[valor] => Grande
                                    
)
                                [
1] => stdClass Object
                                    
(
                                        [
valorReferencia] => md4
                                        
[valor] => Mediano
                                    
)

                        )

                )

    ) 

La cuestión es que tengo que recorrer el array propiedades de manera que mezcle todas las posibles opciones que existan para que quede algo así:
Código PHP:

rellenable        rellenable 2        no rellenable        no rellenable2        valorReferencia
asdf               456                    Rojo                    Grande                123
+456+E56+8ju
asdf               456                    Rojo                    Mediano             123
+456+E56+md4
asdf               456                    Verde                 Grande                123
+456+4t6+8ju
asdf               456                    Verde                 Mediano             123
+456+4t6+8ju
234                456                    Rojo                    Grande                234
+456+E56+8ju
234                456                    Rojo                    Mediano             234
+456+E56+8ju
234                456                    Verde                 Grande                234
+456+E56+8ju
234                456                    Verde                 Mediano             234
+456+E56+8ju 
Básicamente es recorrer el array de forma que se mezclen todas las posibles combinaciones del contenido de [datos], pero contando con que tiene una cantidad variable de elementos.
A su vez se combinará los valores de referencia de cada combinación

Sinceramente, estoy bastante atascado en esto y no se me ocurre ninguna idea.
  #2 (permalink)  
Antiguo 01/07/2009, 05:42
fsk
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Recorrer array (o varios) combinando valores

¿A nadie se le ocurre algún método?
No hace falta que me expongais el código; bastaría con indicarme cómo poder realizarlo, ya que no se me ocurre ninguna forma.

Es más, sólo necesitaría saber cómo combinar las opciones, sin tener que sumar lo del valorReferencia.

Lógicamente puedo partir el array o modificarlo, y si el código es lento, no hay problema, ya que es para una interface de administración la cual sólo accede una sola persona y no tiene prácticamente carga (además, está alojado en un servidor interno administrado por mí).
  #3 (permalink)  
Antiguo 06/07/2009, 03:13
fsk
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Recorrer array (o varios) combinando valores

Bueno, pongo idea que desarrollé para resolverlo:

Recorremos el array principal y cojemos 2 subarrays. Los combinamos y hacemos las operaciones que necesitemos con ellos y el resultante lo combinamos con el siguiente...(y así sucesivamente)

Lógicamente lo mejor será crear una función a la que llamar dentro del bucle para recorrer el array principal.

Saludos
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 16:17.