gpt4 book ai didi

php - 从 PHP 数组中获取随机值,但使其唯一

转载 作者:可可西里 更新时间:2023-11-01 12:24:56 24 4
gpt4 key购买 nike

我想从数组中选择一个随机值,但尽可能保持唯一。

例如,如果我从 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...
}

最佳答案

你几乎是对的。问题出在 unset($arr_history[$selected]); 行。 $selected 的值不是键,但实际上是一个值,因此 unset 不起作用。

为了保持和你上面的一样:

<?php

$arr = $arr_history = array('abc', 'def', 'xyz', 'qqq');

for ( $i = 1; $i < 10; $i++ )
{
// If the history array is empty, re-populate it.
if ( empty($arr_history) )
$arr_history = $arr;

// Select a random key.
$key = array_rand($arr_history, 1);

// Save the record in $selected.
$selected = $arr_history[$key];

// Remove the key/pair from the array.
unset($arr_history[$key]);

// Echo the selected value.
echo $selected . PHP_EOL;
}

或者少几行的例子:

<?php

$arr = $arr_history = array('abc', 'def', 'xyz', 'qqq');

for ( $i = 1; $i < 10; $i++ )
{
// If the history array is empty, re-populate it.
if ( empty($arr_history) )
$arr_history = $arr;

// Randomize the array.
array_rand($arr_history);

// Select the last value from the array.
$selected = array_pop($arr_history);

// Echo the selected value.
echo $selected . PHP_EOL;
}

关于php - 从 PHP 数组中获取随机值,但使其唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6471462/

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