PHP - Dividir elementos de un arreglo en varios grupos sin repetirse

   
Vista:

Dividir elementos de un arreglo en varios grupos sin repetirse

Publicado por Jhonny (3 intervenciones) el 21/01/2015 04:15:52
Buenas amigos que tal

Deseo hacer un pequeño codigo en php en el que me permita dividir elementos de un arreglo en varios grupos

Quiero hacer algo parecido a este ejemplo que les pondré

Tengo un Arreglo con 16 valores (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)

Quiero que ese arreglo se divida en 4, y que me muestre los resultados de forma aleatoria.

Ejemplo: Parte 1 del Arreglo: 3,7,2,11
Parte 2 del Arreglo: 1,16,4,9
Parte 3 del Arreglo: 6,8,5,10
Parte 4 del Arreglo: 12,13,14,15

Algo asi quiero que me muestre de resultado, y que no se repitan los resultados ni uno de los valores.

Gracias.
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 txema

Dividir elementos de un arreglo en varios grupos sin repetirse

Publicado por txema (7 intervenciones) el 21/01/2015 21:01:36
Hola Jhonny :

Posiblemente no sea la solución más limpia ni sencilla, pero funciona.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
echo "Array inicial: ";
foreach ($array as $v) {
    echo $v.", ";
}
echo "<br>";
// desordenamos el array
$array_aleatorio = array_rand($array, 4);
echo "Primer array: ".$array[$array_aleatorio[0]].", ".$array[$array_aleatorio[1]].", ".$array[$array_aleatorio[2]].", ".$array[$array_aleatorio[3]]."<br>";
// borramos los cuatro elementos iniciales
unset($array[$array_aleatorio[0]],$array[$array_aleatorio[1]],$array[$array_aleatorio[2]],$array[$array_aleatorio[3]]);
$array_aleatorio = array_rand($array, 4);
// desordenamos el array que nos queda y repetimos la acción
echo "Segundo array: ".$array[$array_aleatorio[0]].", ".$array[$array_aleatorio[1]].", ".$array[$array_aleatorio[2]].", ".$array[$array_aleatorio[3]]."<br>";
unset($array[$array_aleatorio[0]],$array[$array_aleatorio[1]],$array[$array_aleatorio[2]],$array[$array_aleatorio[3]]);
$array_aleatorio = array_rand($array, 4);
echo "Tercer array: ".$array[$array_aleatorio[0]].", ".$array[$array_aleatorio[1]].", ".$array[$array_aleatorio[2]].", ".$array[$array_aleatorio[3]]."<br>";
unset($array[$array_aleatorio[0]],$array[$array_aleatorio[1]],$array[$array_aleatorio[2]],$array[$array_aleatorio[3]]);
$array_aleatorio = array_rand($array, 4);
echo "Cuarto array: ".$array[$array_aleatorio[0]].", ".$array[$array_aleatorio[1]].", ".$array[$array_aleatorio[2]].", ".$array[$array_aleatorio[3]]."<br>";
unset($array[$array_aleatorio[0]],$array[$array_aleatorio[1]],$array[$array_aleatorio[2]],$array[$array_aleatorio[3]]);
?>

El resultado evidentemente varía cada vez que recargas la página.

Puede quedarte algo como esto:
Array inicial: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
Primer array: 3, 6, 10, 13
Segundo array: 1, 8, 11, 14
Tercer array: 4, 7, 12, 15
Cuarto array: 2, 5, 9, 16


Espero que te sirva. Nos cuentas.
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