我想从数组中随机选择一个值,但尽可能保持唯一。
例如,如果我从一个由4个元素组成的数组中选择一个值4次,则所选值应该是随机的,但每次都不同。
如果我从相同的4个元素组成的数组中选择它10次,显然有些值将重复。
我现在有这个代码,但即使循环运行4次,我仍然会得到重复的值:
$arr = $arr_history = ('abc', 'def', 'xyz', 'qqq');
for($i = 1; $i < 5; $i++){
if(empty($arr_history)) $arr_history = $arr;
$selected = $arr_history[array_rand($arr_history, 1)];
unset($arr_history[$selected]);
// do something with $selected here...
}
array_rand($arr_history, 4)
来随机获取数组?这样可确保您获得 4 个唯一值。在下一次迭代中,您将以不同的顺序获取该数组。 - Felix Klingunset($arr_history[$selected]);
看起来将$arr_history
视为关联数组,因为$selected
是值而不是索引。然而,这并没有解决问题。取消设置$selected
应该将其从数组中删除,这意味着在循环结束时,数组为空。这是你的意图吗?(我认为不是) - afaolek