gpt4 book ai didi

php - 选择具有值条件的数组的随机索引

转载 作者:搜寻专家 更新时间:2023-10-31 20:34:59 24 4
gpt4 key购买 nike

我有一个 bool 值数组,我想从中选择一个值为 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() 函数,我可以在其中给出前提条件?

最佳答案

$arr = array(true,true,false,false,true,false);

$res = array_keys($arr, true);

var_dump($res); // returns 0,1,4

echo $res[array_rand($res)]; //echo one of the indexes that is true

以上代码返回$arr的真实值在$res中的索引。

https://3v4l.org/CG1v2

编辑。然后将 $arr 索引之一设置为 false 你应该:

$arr[$res[array_rand($res)]] = false; // will set one as false.

循环这两行最终会将所有索引设置为 false:

$res = array_keys($arr, true);
$arr[$res[array_rand($res)]] = false;

关于php - 选择具有值条件的数组的随机索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com