【发布时间】:2016-11-06 19:45:45
【问题描述】:
我有一个布尔数组,我想从中选择一个值为 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() 函数,我可以在哪里给出前提条件?
【问题讨论】:
-
您是否打算在循环中运行它或类似的东西会在某一时刻执行每个
true条目?
标签: php arrays random conditional-statements