У меня есть массив под названием $ran = array(1,2,3,4);
Мне нужно получить случайное значение из этого массива и сохранить его в переменной, как я могу это сделать?
Вы также можете просто:
$k = array_rand($array);
$v = $array[$k];
Это способ сделать это, когда у вас есть ассоциативный массив.
array_rand
не так случайен, как должен бытьarray_rand_value
array_rand()
используется генератор Mersenne Twister: rand () с псевдонимом mt_rand () и srand () с псевдонимом mt_srand () . На практике теперь должно быть достаточно.PHP предоставляет функцию только для этого: array_rand ()
http://php.net/manual/en/function.array-rand.php
источник
array_rand
функции имеет значение,1
поэтому писать его не нужно.Вы можете использовать mt_rand ()
Это также пригодится как функция, если вам нужно значение
источник
array_rand
не так случайен, как должен быть, поэтомуmt_rand
предпочтительнееisset
части? В любом случае это не сработает для ассоциативных массивов.mt_rand
вместоrand
в этом случае кажется, что некоторые предметы предпочитают больше, чем другиеисточник
Вы можете использовать функцию array_rand для выбора случайного ключа из вашего массива, как показано ниже.
или вы можете использовать функции rand и count для выбора случайного индекса.
источник
Получено из Laravel
Collection::random()
:Использование:
Несколько примечаний:
$amount
должно быть меньше или равноcount($array)
.array_rand()
не перемешивает ключи (начиная с PHP 5.2.10, см. 48224 ), поэтому выбранные вами элементы всегда будут в исходном порядке. Приshuffle()
необходимости используйте потом.Документация:
array_rand()
,shuffle()
edit: С тех пор функция Laravel заметно выросла, см. Laravel 5.4
Arr::random()
. Вот что-то более сложное, полученное из взрослой функции Laravel:Несколько основных моментов:
array_random($array, 1)
возвращает массив из одного элемента ( # 19826 )источник
array_rand
Функция , кажется, имеет неравномерное распределение на больших массивах, не каждый элемент массива с равной вероятностью получить взял. Использование перемешивания в массиве с последующим взятием первого элемента не вызывает этой проблемы:источник
mt_rand()
, вероятно, лучше подходят для этой задачи.Другой подход - переворачивание массива для получения прямого значения.
отрывок
array_rand
ключ возврата, а не значение. Итак, мы переворачиваем значение как ключ.Примечание: ключ PHP всегда является уникальным ключом, поэтому при переворачивании массива повторяющееся значение в качестве ключа будет перезаписано.
источник
$array[array_rand($array)];
?array_flip
удалите дубликат как ключ, затем дайте результат ... Значит, дубликатов нет!или, в частности, для массивов:
источник
В моем случае мне нужно получить 2 значения, которые являются объектами. Я разделяю это простое решение.
источник
Имеет ли ваш выбор какие-либо последствия для безопасности? Если да, используйте
random_int()
иarray_keys()
. (random_bytes()
только PHP 7, но есть полифилл для PHP 5 ).Использование:
Демо: https://3v4l.org/1joB1
источник
Используйте rand (), чтобы получить случайное число для вывода случайного ключа. Например: 0 - 3
источник
Одна линия:
$ran[rand(0, count($ran) - 1)]
источник
Мне нужна была однострочная версия для короткого массива:
или если массив зафиксирован:
источник
On-вкладыш:
источник
Это будет хорошо работать с встроенными массивами. Кроме того, я думаю, что все становится более аккуратным и более пригодным для многократного использования, когда оно заключено в функцию.
Использование:
В PHP <7.1.0
array_rand()
используетсяrand()
, поэтому вы не захотите использовать эту функцию для чего-либо, связанного с безопасностью или криптографией. В PHP 7.1.0+ используйте эту функцию без беспокойства, поскольку онаrand()
имеет псевдонимmt_rand()
.источник
Я основываю свой ответ на функции @ ÓlafurWaage. Я попытался использовать его, но столкнулся с проблемами со ссылками, когда попытался изменить возвращаемый объект. Я обновил его функцию, чтобы передавать и возвращать по ссылке. Новая функция:
Для получения дополнительной информации см. Мой вопрос в разделе Передача / возврат ссылок на объект + изменение объекта не работает
источник
Простой способ получить значение Randdom из массива .
теперь каждый раз вы будете получать разные цвета от Array .
источник
Вы получаете случайное число из массива следующим образом:
источник