PHP
Shuffling and Reversing PHP Array Elements
Discover how to randomize the order of elements in a PHP array using `shuffle()` or create a new array with elements in reverse order with `array_reverse()`.
<?php
$cards = ['Ace', 'King', 'Queen', 'Jack', '10', '9'];
$numbers = [1, 2, 3, 4, 5];
echo "Original cards: " . implode(', ', $cards) . "
";
// Randomize the order of elements in the array (modifies the array in place)
shuffle($cards);
echo "Shuffled cards: " . implode(', ', $cards) . "
";
// Output will vary, e.g., King, Ace, 9, Jack, Queen, 10
echo "Original numbers: " . implode(', ', $numbers) . "
";
// Create a new array with elements in reverse order (does not modify original)
$reversedNumbers = array_reverse($numbers);
echo "Reversed numbers: " . implode(', ', $reversedNumbers) . "
";
// Expected: 5, 4, 3, 2, 1
echo "Original numbers after reverse (unchanged): " . implode(', ', $numbers) . "
";
// Expected: 1, 2, 3, 4, 5
// Reversing an associative array, preserving keys
$user = ['id' => 1, 'name' => 'Alice', 'role' => 'admin'];
$reversedUserPreserveKeys = array_reverse($user, true);
echo "Reversed user (preserving keys): " . json_encode($reversedUserPreserveKeys) . "
";
// Expected: {"role":"admin","name":"Alice","id":1}
// Reversing an associative array, re-indexing numerically
$reversedUserReindex = array_reverse($user, false);
echo "Reversed user (re-indexing): " . json_encode($reversedUserReindex) . "
";
// Expected: ["admin","Alice",1] (numeric keys 0, 1, 2)
?>
How it works: This snippet demonstrates two common ways to reorder array elements. The `shuffle()` function randomizes the order of elements within an array directly (in-place modification), which is useful for creating random sequences like shuffling a deck of cards. The `array_reverse()` function returns a new array with elements in the opposite order of the input array. It can optionally preserve associative keys or re-index the array numerically.