Ordenar arrays de forma aleatoria con la función shuffle de PHP
En este artículo vamos a ver como juntar varios arrays mezclándolos mostrando los resultados en un orden aleatorio.
PHP dispone de la función shuffle(array), que se encarga demezclar un array (crea un orden aleatorio de sus elementos).
Devuelve TRUE en caso de éxito o FALSE en caso de error.
En el ejemplo que vamos a ilustrar en este tutorial vamos a tener 2 arrays que uniremos posteriormente para luego mezclarlos aplicando la ejecución de la anterior función shuffle(). La idea general es mostrar en el mismo contenedor 2 elementos de distinta índole como por ejemplo: productos y categorias con orden aleatorio.
Entrando más en materia, vamos a tener un array de productos, donde vamos a guardar su número de identificación, su nombre y precio. Vamos a crear 8 productos.
//Generación de productos
for ($i=1; $i<9; $i++) {
$products[$i] = array('id' => $i,
'name' => 'Producto '.$i,
'price' => 20 + $i);
}
También ejecutaremos un código muy parecido para las categorías. En concreto, creamos 4 categorías para el ejemplo:
//Generación de categorias
for ($j=1; $j<5; $j++) {
$categories[$j] = array('id' => $j,
'name' => 'Category '.$j);
}
Uniremos los dos arrays (productos y categorías):
$data = array_merge($products, $categories);
Ahora solo falta llamar a la función shuffe() para mezclar los productos y las categorías de forma aletaria:
<?php
if (shuffle($data)) {
?>
<div class="content">
<?php
foreach ($data as $row) {
echo '<div class="element">';
echo '<h2>'.$row['name'].'</h2>';
if ($row['price']) echo '<p>'.$row['price'].' €</p>';
echo '</div>';
}
?>
</div>
<?php
}
?>
Ver el ejemplo en funcionamiento

Deja una respuesta