Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Array multidimensional con recursividad complicado

Estas en el tema de Array multidimensional con recursividad complicado en el foro de PHP en Foros del Web. Hola a todos: La verdad llevo un rato exprimiendome la cabeza pero no hay forma de plantearlo; resulta que tengo el siguiente array: Código: $contenido[0][0]['id_attribute'] ...
  #1 (permalink)  
Antiguo 13/09/2012, 05:28
Avatar de victor5atodogas  
Fecha de Ingreso: junio-2010
Mensajes: 447
Antigüedad: 13 años, 10 meses
Puntos: 2
Array multidimensional con recursividad complicado

Hola a todos:

La verdad llevo un rato exprimiendome la cabeza pero no hay forma de plantearlo; resulta que tengo el siguiente array:

Código:
$contenido[0][0]['id_attribute'] = 100;
$contenido[0][0]['id_attribute_group'] = 1;
$contenido[0][1]['id_attribute'] = 101;
$contenido[0][1]['id_attribute_group'] = 1;
$contenido[0][2]['id_attribute'] = 102;
$contenido[0][2]['id_attribute_group'] = 1;
$contenido[0][3]['id_attribute'] = 103;
$contenido[0][3]['id_attribute_group'] = 1;

$contenido[1][0]['id_attribute'] = 200;
$contenido[1][0]['id_attribute_group'] = 2;
$contenido[1][1]['id_attribute'] = 201;
$contenido[1][1]['id_attribute_group'] = 2;
$contenido[1][2]['id_attribute'] = 202;
$contenido[1][2]['id_attribute_group'] = 2;
$contenido[1][3]['id_attribute'] = 203;
$contenido[1][3]['id_attribute_group'] = 2;

$contenido[2][0]['id_attribute'] = 300;
$contenido[2][0]['id_attribute_group'] = 3;
$contenido[2][1]['id_attribute'] = 301;
$contenido[2][1]['id_attribute_group'] = 3;
$contenido[2][2]['id_attribute'] = 302;
$contenido[2][2]['id_attribute_group'] = 3;
$contenido[2][3]['id_attribute'] = 303;
$contenido[2][3]['id_attribute_group'] = 3;
Hay que tener en cuenta que el array no es fijo, y que cada uno de los elementos tampoco; es decir, el 0 puede tener 4 valores, el 2 tener 1 valor, etc.

Lo que pretendo conseguir es:

100, 200, 300
100, 200, 301
100, 200, 302
100, 200, 303
100, 201, 300
100, 201, 301
100, 201, 302
100, 201, 303
100, 202, 300
100, 202, 301
100, 202, 302
100, 202, 303
100, 203, 300
100, 203, 301
100, 203, 302
100, 203, 303
101, 200, 300
......

Es decir, recorrer TODOS los elementos de todos.

¿Alguna propuesta para lograrlo?

Muchas gracias.
  #2 (permalink)  
Antiguo 13/09/2012, 05:40
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Array multidimensional con recursividad complicado

¿Algo así te serviría?

Código PHP:
function recorro($matriz){
 
    foreach(
$matriz as $key=>$value){
 
        if (
is_array($value)){  
                        
//si es un array sigo recorriendo
            
echo 'key:'$key;
            echo 
'<br>';
            
recorro($value);
        }else{  
               
//si es un elemento lo muestro
            
echo $key.': '.$value ;
            echo 
'<br>';
        }
 
    }
 

Lo saqué de algún lado, no es propio. A mi me sirvió.
  #3 (permalink)  
Antiguo 13/09/2012, 05:44
Avatar de victor5atodogas  
Fecha de Ingreso: junio-2010
Mensajes: 447
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Array multidimensional con recursividad complicado

En primer lugar muchas gracias por la rápida respuesta; no obstante esto solo sirve para obtener todos los valores del array por muy grande que sea; el problema mio es recorrerlo varias veces para obtener esos resultados.
  #4 (permalink)  
Antiguo 13/09/2012, 06:00
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Array multidimensional con recursividad complicado

No te entiendo muy bien. La función recorre el array, y si encuentra un array también lo recorre y todos los que vengan y sino es array recorre los elementos. Es decir recorrería todos los elementos del array aunque sea multidimensional. ¿No es lo que necesitas?
  #5 (permalink)  
Antiguo 13/09/2012, 06:07
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 17 años, 11 meses
Puntos: 58
Respuesta: Array multidimensional con recursividad complicado

Hola, primero has comentado que: Es decir, recorrer TODOS los elementos de todos.
Y la función de alycia lo hace... ¿qué signfica recorrer varias veces? :)
  #6 (permalink)  
Antiguo 13/09/2012, 06:58
Avatar de victor5atodogas  
Fecha de Ingreso: junio-2010
Mensajes: 447
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Array multidimensional con recursividad complicado

Ok perdón; la función de alycia efectivamente recorre todos los elementos del array; es decir, como si se hiciera un var_dump() del array; la cuestión es que lo que se pretende es sacar todas las combinaciones posibles sin estar repetidas tal y como pongo en el ejemplo.

Perdón por no haberme explicado bien.
  #7 (permalink)  
Antiguo 13/09/2012, 07:02
Avatar de victor5atodogas  
Fecha de Ingreso: junio-2010
Mensajes: 447
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Array multidimensional con recursividad complicado

Os lo explico de otra forma; tengo este array:

array[0][0] = 1
array[0][1] = 2

array[1][0] = 3
array[1][1] = 4

array[2][0] = 5

La función que comentáis me leería todos los valores; pero partiendo de que ambos son multidimensionales tendría que obtener las siguientes combinaciones:

1,3,5
1,4,5
2,3,5
2,4,5

Creo que con el ejemplo es mas claro.

Etiquetas: multidimensional, recursividad
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 10:10.