🎲 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:
truese il mescolamento è riuscito,falsese 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.
- Editor di codice PHP (VS Code, Notepad++)
- Server locale (XAMPP, MAMP, Laragon)
- Browser per visualizzare i risultati
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.