PHP:如何替换具有固定大小的数组中的重复数组值

我有一个固定大小为 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

                {      

                }


皈依舞
浏览 124回答 3
3回答

森林海

一个简单(但不是最佳)的解决方案是在数组长度不是 10 时不断向数组添加值,并始终删除重复项,这将确保数组有 10 个不同的随机元素。$array = [];while (count($array) < 10){&nbsp; &nbsp; $array[] = rand(10, 100);&nbsp; &nbsp; $array = array_unique($array);}print_r($array);

慕侠2389804

对于像这样的小数组(100 个数字),您可以生成一个包含 10-100 个元素的数组,然后随机选择。一条线解决方案:print_r(array_rand(range(10,&nbsp;100),&nbsp;10));

慕仙森

也许像这样?<?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)];&nbsp; &nbsp; foreach ($numbers as $key => $number)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if (in_array($number,$numbers))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $numbers[$key] = rand(10,100);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }print_r($numbers);?>
打开App,查看更多内容
随时随地看视频慕课网APP