Необходимо перетасовать элементы массива в случайном порядке.
Если у вас запущена версия PHP 4.3 или выше, то используйте функцию shuffle():
shuffle($array);
С более ранними версиями используйте функцию pc_array_shuffle(), показанную ниже:
Пример pc_array_shuffle()
function pc_array_shuffle($array) {
$i = count($array);
while( -- $i) {
$j = mt_rand(0, $i);
if ($i != $j) {
// перестановка элементов
$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}
return $array;
}
Ниже приведены примеры:
$cards = range(1,52); // deal out 52 "cards"
$cards = pc_array_shuffle($cards);
В PHP уже существует функция shuffle() для перемешивания массивов, однако в PHP 4.2.2 она работает некорректно. Встроенный алгоритм перемешивания имеет тенденцию давать предпочтение одним определенным перестановкам перед другими. Последние перестановки выглядят случайными, но так как элементы в каждой конкретной
позиции имеют разные шансы оказаться в конце процесса, то такая
перетасовка является недостоверной. Это исправлено в PHP 4.3.
Функция pc_array_shuffle(), известная как перестановка Фишера-Йетса, одинаково распределяет элементы вдоль массива. Используйте ее с версиями PHP более ранними, чем 4.3. В отличие от shuffle( ), эта функция возвращает перемешанный массив, а не изменяет его по месту. Она также требует плотно упакованного массива с целочисленными ключами.
См. также
Документацию по функции shuffle() на http://www.php.net/shuffle