我有一系列值。
array = ["A", "B", "C"];
我想随机选择一个项目,用它做一些事情,然后从数组中删除它。回去拿另一件物品......等等。
所以我得到了:
$item = "B";
array = ["A","C"];
$item = "C";
array = ["A"];
$item = "A";
array =[];
我知道Ruby有一个array.delete_at()
函数,如果我使用Ruby,它会很好用。是否有类似于通用PHP中的函数?
答案 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);
}