我有一个固定大小为 10 的数组。该数组填充有随机数。我想要的是打印大小为 10 的数组,并过滤掉所有重复项。我使用了 array_unique,但它只是删除重复项,并且不会用新的随机数替换重复值。因此,有时大小是 9 个数字,有时大小是 7 个数字。我希望数组的长度始终为 10 个数字,并且没有重复值。我已经尝试了几个函数(in_array、isset、array_replace、array_merge、array_search),但我不知道如何实现我想要的。我的代码可以检测到存在重复项,但我不知道如何用同样唯一的新随机数替换这些重复项。这是我写的代码:$numbers = Array (rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100)); If (count($numbers) > count(array_unique($numbers))) { Foreach ($numbers As $number) { $inArray = array_search($number, $numbers); If ($inArray === FALSE) { echo "No duplicate(s) found" ; } Else { echo "Duplicate(s) found" ; } } } Else { }
3 回答
森林海
TA贡献2011条经验 获得超2个赞
一个简单(但不是最佳)的解决方案是在数组长度不是 10 时不断向数组添加值,并始终删除重复项,这将确保数组有 10 个不同的随机元素。
$array = [];
while (count($array) < 10){
$array[] = rand(10, 100);
$array = array_unique($array);
}
print_r($array);
慕侠2389804
TA贡献1719条经验 获得超6个赞
对于像这样的小数组(100 个数字),您可以生成一个包含 10-100 个元素的数组,然后随机选择。
一条线解决方案:
print_r(array_rand(range(10, 100), 10));
慕仙森
TA贡献1827条经验 获得超7个赞
也许像这样?
<?php
$numbers = [rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100), rand(10,100)];
foreach ($numbers as $key => $number)
{
if (in_array($number,$numbers))
{
$numbers[$key] = rand(10,100);
}
}
print_r($numbers);
?>
- 3 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消