Как выбрать случайные значения из массива в PHP?

У меня есть массив объектов в PHP. Мне нужно выбрать 8 из них наугад. Моя первоначальная мысль заключалась в использовании array_rand(array_flip($my_array), 8) но это не работает, потому что объекты не могут действовать как ключи для массива.

Я знаю, что могу использовать shuffle , но меня беспокоит производительность, поскольку массив растет по размеру. Это лучший способ, или есть более эффективный способ?

Related of "Как выбрать случайные значения из массива в PHP?"

 $result = array(); foreach( array_rand($my_array, 8) as $k ) { $result[] = $my_array[$k]; } 
 $array = array(); shuffle($array); // randomize order of array items $newArray = array_slice($array, 0, 8); 

Обратите внимание, что функция shuffle() дает параметр в качестве ссылки и вносит изменения в него.

Вы можете использовать array_rand для случайного выбора ключей и foreach для сбора объектов:

 $objects = array(); foreach (array_rand($my_array, 8) as $key) { $objects[] = $my_array[$key]; } 

Как насчет?:

 $count = count($my_array); for ($i = 0; $i < 8; $i++) { $x = rand(0, $count); $my_array[$x]; } 

Я только что нашел это в нашем коде и надеялся найти более читаемое решение:

 $rand = array_intersect_key($all, array_flip(array_rand($all, $count)));