Or, you know, just use the shuffle()
function. Kim points out the drawbacks of shuffle in the comments below.
A custom PHP function. This function will return an array that’s been resorted in a random order. Supports both numerically-indexed and associative arrays. Uses PHP’s native array_rand()
function.
function array_randsort($array,$preserve_keys=false){ /*-------------------------------------/ Preserving the keys works best with associative arrays. If you choose to preserve keys on a numerically-indexed or mixed-indexed array, use a foreach loop rather than a for loop to preserve the sorted order. /-------------------------------------*/ if(!is_array($array)): exit('Supplied argument is not a valid array.'); else: $i = NULL; // how long is the array? $array_length = count($array); // Sorts the array keys in a random order. $randomize_array_keys = array_rand($array,$array_length); // if we are preserving the keys ... if($preserve_keys===true) { // reorganize the original array in a new array foreach($randomize_array_keys as $k=>$v){ $randsort[$randomize_array_keys[$k]] = $array[$randomize_array_keys[$k]]; } } else { // reorganize the original array in a new array for($i=0; $i < $array_length; $i++){ $randsort[$i] = $array[$randomize_array_keys[$i]]; } } return $randsort; endif; }