PHP

Mescola Elementi Con Shuffle()

Funzione shuffle() in PHP: mescolare casualmente gli elementi di un array con esempi pratici e laboratorio.


🎲 Mescolare un Array con shuffle() in PHP

La funzione shuffle() serve per mescolare casualmente gli elementi di un array. Dopo l'operazione, l'array avrà un ordine completamente nuovo, come se le carte fossero state mischiate.

Questa funzione è molto utile in contesti come:

  • Quiz o test con domande casuali
  • Estrazioni o giochi
  • Visualizzazione casuale di immagini o prodotti


1. Sintassi

shuffle(array);
  • array → l’array da mescolare (viene modificato direttamente).
  • Ritorno: true se il mescolamento è riuscito, false se fallisce.

2. Esempio base

<?php
$numeri = [1, 2, 3, 4, 5];

shuffle($numeri);

print_r($numeri);
?>

Array
(
    [0] => 4
    [1] => 1
    [2] => 5
    [3] => 3
    [4] => 2
)

Ogni volta che esegui lo script, l'ordine cambia in modo casuale.


3. Attenzione alle chiavi

La funzione shuffle() reindicizza sempre l'array da 0 in poi. Le chiavi originali vengono perse. Se vuoi mescolare mantenendo le chiavi, devi usare altre soluzioni (es. estrarre le chiavi con array_keys() e rimescolarle manualmente).


4. Applicazione pratica: quiz casuale

<?php
$domande = [
    "Qual è il capitale d'Italia?",
    "Chi ha scritto la Divina Commedia?",
    "In che anno è iniziata la Prima Guerra Mondiale?",
    "Quanti sono i pianeti del Sistema Solare?"
];

shuffle($domande);

foreach ($domande as $d) {
    echo $d . "<br>";
}
?>

Ogni volta che aggiorni la pagina, le domande appaiono in un ordine diverso.


5. Utilizzo con valori associativi

shuffle() funziona solo su array indicizzati numericamente. Se usi un array associativo, le chiavi verranno perse. Esempio:


<?php
$studenti = [
    "Luca" => 25,
    "Anna" => 28,
    "Marco" => 22
];

shuffle($studenti);

print_r($studenti);
?>

Array
(
    [0] => 28
    [1] => 22
    [2] => 25
)

Come puoi notare, le chiavi (Luca, Anna, Marco) sono state eliminate.



LABORATORIO

Mescolare gli elementi di un array con shuffle()

In questo laboratorio imparerai a mescolare gli elementi di un array per creare un ordine casuale. Vedrai esempi pratici con numeri, parole e quiz.


1 Mescolare un array di numeri

Crea un file chiamato array-shuffle.php e inserisci il seguente codice:


<?php
$numeri = [1, 2, 3, 4, 5, 6];

echo "<h3>Array originale:</h3>";
print_r($numeri);

shuffle($numeri);

echo "<h3>Array mescolato:</h3>";
print_r($numeri);
?>
    

2 Mescolare un elenco di parole

Prova ora con una lista di colori:


<?php
$colori = ["Rosso", "Verde", "Blu", "Giallo", "Viola"];

echo "<h3>Lista originale:</h3>";
print_r($colori);

shuffle($colori);

echo "<h3>Lista mescolata:</h3>";
print_r($colori);
?>
    

3 Applicazione pratica: quiz casuale

Creiamo una semplice lista di domande che cambiano ordine a ogni caricamento:


<?php
$domande = [
    "Chi ha scoperto l'America?",
    "Qual è la capitale della Francia?",
    "Quanti giorni ha un anno bisestile?",
    "Chi ha dipinto la Gioconda?"
];

shuffle($domande);

echo "<h3>Domande in ordine casuale:</h3>";
foreach ($domande as $d) {
    echo "- " . $d . "<br>";
}
?>
    

4 Test e analisi

  • Esegui gli esempi nel browser più volte e osserva come cambia l'ordine.
  • Prova ad aggiungere o rimuovere elementi dall'array.
  • Ricorda che shuffle() non mantiene le chiavi associative.
  • Puoi combinarlo con array_slice() per estrarre un numero casuale di elementi.