簡體   English   中英

如何在PHP中從數組中選擇隨機值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM