当前位置: 首页 > 知识库问答 >
问题:

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

澹台华采
2023-03-14

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

漆雕疏珂
2023-03-14

对于像这样的小数组(100个数字),您可以生成一个包含10-100个元素的数组,然后随机选取。

单线解决方案:

print_r(array_rand(range(10, 100), 10));
吕骞尧
2023-03-14

也许像这样?

<?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);
?>
华君浩
2023-03-14

一个简单的(但不是最优的)解决方案是在数组长度不是10的情况下不断向其添加值,并始终移除重复值,这将确保数组有10个不同的随机元素。

$array = [];

while (count($array) < 10){
    $array[] = rand(10, 100);
    $array = array_unique($array);
}

print_r($array);
 类似资料:
  • 我有一个结构与一些固定大小的数组: 我从一个文件中读取字节到一个固定大小的数组中,并将这些字节逐位复制到结构中。 最后一行()不起作用,因为在结构中它是一个,而是一个切片。我是否可以返回将一个片转换为一个固定大小的数组,就像在一个范围内那样,而不是像我所做的那样说?

  • 问题内容: 我正在尝试将固定大小的数组转换为可变大小的数组(切片): 但是编译器抛出错误: 我应该如何转换? 问题答案: 使用让您在阵列上切片。另请参阅此博客文章,以获取有关数组和切片的更多信息。

  • 我试图研究它,但没有找到答案。我正在创建一个数据类,在该类中,我想创建一个固定大小的数组。我尝试了以下3个选项: 但是都不行。然而,这确实有效: 如何在数据类中初始化固定大小的字符串数组

  • 问题内容: 在Swift中,我试图创建一个由64个SKSpriteNode组成的数组。我想先将其初始化为空,然后将Sprites放在前16个单元格中,然后将最后16个单元格中(模拟象棋游戏)。 根据我在文档中了解的内容,我期望会出现以下情况: 要么 但这是行不通的。在第二种情况下,我收到一条错误消息:“尚不支持定长数组”。那可以是真的吗?对我来说,这听起来像是一项基本功能。我需要通过它们的索引直接

  • 相关:切片到固定大小的数组,但是我正在寻找更具体的形式。 理想情况下,我希望构建一个具有以下签名的函数: 因为这还不可能(因为非类型参数不是一件事),所以我不想让函数直接接受数组: 用代替。 以下是我迄今为止最有希望的尝试: 然而,我错过了允许数组强制切片的特性(提示:这不是)。 只要我同意函数只适用于小数组,有没有办法使用安全代码构建这样的函数?

  • 问题内容: 我在这里阅读了一些帖子,然后开始了为什么有些人这样做 代替 第二个不是更好,因为它仅创建一个对象,而第一个可能创建多个对象(即使它并没有浪费多少内存)?还是我错了?有什么区别吗? 问题答案: 最大的区别在于值随时间变化的方式,因此您选择的值应取决于您要对代码执行的操作。 如果您只是简单地调用代码,它将按照您的预期进行- 将首选尺寸设置为500x500。但是,应用程序中的其他代码可能会用

  • 免责声明:我知道这个问题可以通过数组的单次传递非常有效地解决,但我对用分而治之法做这个很感兴趣,因为它与我们用分而治之法处理的典型问题有点不同。 假设给定一个浮点数组x[1:n],大小为n,间隔长度为l。问题是设计一个分治算法,从具有最大和的数组中找到长度为l的子数组。 现在,为了将问题分成两半,我决定在n-l+1/2处中断数组,以便将相等数量的子数组分配到我的除法的两半,如下面的算法所示。同样,

  • 问题内容: 我想知道如何初始化一个数组(或列表),但尚未填充值,以具有定义的大小。 例如在C中: 我该如何在python中做到这一点? 谢谢。 问题答案: 您可以使用: