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.

shuffe

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

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(6 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre