从数组中随机选择一项,然后删除

时间:2017-01-26 20:18:36

标签: php arrays

我有一系列值。

 array =  ["A", "B", "C"]; 

我想随机选择一个项目,用它做一些事情,然后从数组中删除它。回去拿另一件物品......等等。

所以我得到了:

$item = "B";
array = ["A","C"]; 
$item = "C";
array = ["A"]; 
$item = "A";
array =[];

我知道Ruby有一个array.delete_at()函数,如果我使用Ruby,它会很好用。是否有类似于通用PHP中的函数?

2 个答案:

答案 0 :(得分:3)

使用shuffle()进行随机化,然后在结尾处弹出一个,或者从array_shift()开始移开,不重要:

shuffle($array);  // you only need to do this once
$item = array_pop($array);

类似于Ruby,你展示的是获取随机密钥并使用它来获取值,然后将其用于unset()该元素:

$item = $array[$key=array_rand($array)];
unset($array[$key]);

答案 1 :(得分:1)

有两种可能的答案:

如果你不关心将留在数组中的元素的顺序,例如你将选择所有元素:

$array =  ["A", "B", "C"];

shuffle($array);
while (!empty($array)) {
    $randomElement = array_pop($array);
    var_dump($randomElement);
}

如果你不想挑选所有元素,只有少数。您可以删除您选择的元素,将其他元素保留为相同的顺序:

 $array =  ["A", "B", "C"];

 while (!empty($array)) {
     $randomKey = array_rand($array);
     $randomElement = $array[$randomKey];
     unset($array[$randomKey]);
     var_dump($randomElement);
 }