我有一个布尔值数组,我想从中选择一个随机索引,其值为true并将其设置为false。选择条件的随机索引值
我当然可以,用蛮力靠捡指数做到这一点,直到我打了一个的值是true:
$arr = array(true, false, false, true, false, true);
var_dump($arr);
$i = array_rand($arr);
while(!$arr[$i])
{
$i = array_rand($arr);
}
$arr[$i] = false;
var_dump($arr);
这就造成这样的事情,在第四个条目得到了改变。
array(6) {
[0]=>
bool(true)
[1]=>
bool(false)
[2]=>
bool(false)
[3]=>
bool(true)
[4]=>
bool(false)
[5]=>
bool(true)
}
array(6) {
[0]=>
bool(true)
[1]=>
bool(false)
[2]=>
bool(false)
[3]=>
bool(false)
[4]=>
bool(false)
[5]=>
bool(true)
}
但是,我必须用大得多的数组来做这个操作几次。在某些时候,阵列几乎完全是错误的,在这种情况下,蛮力方法效率不高。
有没有更优雅的方法来解决这个问题?任何种类的array_rand()
函数,我可以给出一个先决条件?
你打算在一个循环或类似的东西运行此那会在一个点上做每个“真实”的入口? –