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



我有一个值数组。

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

我想随机选择一个项目,对它做些什么,然后从数组中删除它。回去拿另一件东西,等等。

所以我得到:

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

我知道Ruby有一个array.delete_at()函数,如果我使用Ruby的话,它会非常好用。有没有类似于普通PHP中的函数?

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]);

有两种可能的答案:

如果您不关心数组中剩余元素的顺序,例如,您无论如何都会选择所有元素:

$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);
}

相关内容

最新更新