我有一个 PHP 数组:
$arr = array(1,2,3,3,4,6,6);
我想在每个重复对(3 个和 6 个)中找到任一重复项的位置,并使用 rand(1,8) 重置该值。我该怎么做呢?我基本上需要确保所有数组值都不同。
我有一个 PHP 数组:
$arr = array(1,2,3,3,4,6,6);
我想在每个重复对(3 个和 6 个)中找到任一重复项的位置,并使用 rand(1,8) 重置该值。我该怎么做呢?我基本上需要确保所有数组值都不同。
你可以试试
$arr = array(1,2,3,3,4,6,6);
$dup = array_diff_assoc($arr,array_unique($arr));
$v = mt_rand(1, 8);
foreach ( $dup as $k ) {
while ( in_array($v, $arr) ) {
$v = mt_rand(1, 8);
}
$arr[$k] = $v;
}
echo "<pre>";
print_r($arr);
一种简单的方法是记录数组中有多少项,使用 array_unique,最后使用 rand 重新填充数组:
$size = count($arr);
$arr = array_unique($arr);
while (count($arr) < $size) {
$arr[] = rand(1,8,$arr);
}
您需要重复此操作,直到 count($arr) == count(array_unique($arr))。您还可以使用 in_array() 和循环创建一个随机函数,该函数很容易给出数组中尚不存在的随机值。