[英]How do I select random values from an array in PHP?
我在PHP中有一個對象數組。 我需要隨機選擇其中的8個。 我最初的想法是使用array_rand(array_flip($my_array), 8)
但這不起作用,因為對象不能作為數組的鍵。
我知道我可以使用shuffle
,但是當陣列的大小增加時我擔心性能。 這是最好的方式,還是有更高效的方式?
$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];
}
我剛剛在我們的代碼中找到了這個,並希望找到一個更易讀的解決方案:
$rand = array_intersect_key($all, array_flip(array_rand($all, $count)));
關於什么?:
$count = count($my_array);
for ($i = 0; $i < 8; $i++) {
$x = rand(0, $count);
$my_array[$x];
}
您可以使用此函數從數組中獲取多個隨機元素:
function getRandomElements(array $array): array
{
$result = [];
$count = count($array);
for ($i = 0; $i < rand(0, $count); $i++) {
$result[] = rand(0, $count);
}
$result = array_unique($result);
sort($result);
return $result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.