Php перемешать массив в случайном порядке

Php перемешать массив в случайном порядке

Отсортировать элементы массива в случайном порядке можно при помощи функции void shuffle(array &$array) . Функция принимает массив по ссылке и сортирует массив в случайном порядке, при это сбрасывая ключи массива.

Пример

Результат

В результате на экране вы увидите 2 массива, первый исходный, второй отсортированный.

Как вы перемешаете массив PHP, все еще зная исходный индекс?

У меня есть простой массив в PHP (например, ["a", "b", "c", [5, 10]] ).

shuffle() Функция позволяет перетасовать элементы.

Однако я все еще хочу знать, каков был первоначальный индекс. Как я могу это сделать?

Решение

Увидеть случайный док 2-й пример:

Другие решения

Вы имеете в виду перемешать элементы и оставить их с ключами, так что если вы foreach над ними они выходят в случайном порядке? Это возможно путем преобразования массива в список [key, value] пары:

Так ["a", "b", "c", [5, 10]] становится [[0, "a"], [1, "b"], [2, "c"], [3, [5, 10]] ,

Затем перетасуйте пары:

Который может закончиться чем-то вроде этого (случайно каждый раз, очевидно):

Наконец, снова измените его в обычный массив:

Конечный результат выглядит примерно так:

Это то, что вы хотите?

Это всего лишь один из способов сделать это. То, что предложил Джерард, возможно, более эффективно.

(PHP 4, PHP 5, PHP 7)

shuffle — Перемешивает массив

Описание

Эта функция перемешивает элементы массива в случайном порядке.

Список параметров

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования shuffle()

Примечания

Замечание: Эта функция присваивает новые ключи элементам массива . Она удалит все существующие ключи, а не просто переупорядочит их.

Ссылка на основную публикацию
Adblock detector