PHP-检查重复数组

PHP-检查重复数组,php,Php,例如,我有一个数组: 1,2,3,4,5,5,6,7,8,9 现在这个数组被分成三个数组(随机) 例如: 1,2,3 4,5,6 7,8,9 现在我必须用相同的数字(1-9)再次创建3个数组 但新数组不应包含与过去数组相同的数字 1,3,5(不正确,3已经与1在一起) 1,5,7(正确,所有数字彼此都是新的) 现在我找到了一种使用循环检测的方法,下面是代码的一部分。 $temp_plr是新随机创建的数字(3编号数组)。 $team\u check在前面3个编号数组中的任意一个上。

例如,我有一个数组:

1,2,3,4,5,5,6,7,8,9
现在这个数组被分成三个数组(随机)
例如:

1,2,3  
4,5,6  
7,8,9  
现在我必须用相同的数字(1-9)再次创建3个数组 但新数组不应包含与过去数组相同的数字

1,3,5
(不正确,3已经与1在一起)

1,5,7
(正确,所有数字彼此都是新的)

现在我找到了一种使用循环检测的方法,下面是代码的一部分。
$temp_plr
是新随机创建的数字(3编号数组)。
$team\u check
在前面3个编号数组中的任意一个上。
执行此检查直到找到以前未出现的新组合。
它可以工作,但有时速度非常慢,这会导致浏览器超时或永远循环。
如果你需要更多的解释,请告诉我

if((in_array($temp_plr[0], $team_check) && in_array($temp_plr[1],$team_check))
    || (in_array($temp_plr[0],$team_check) && in_array( $temp_plr[2],$team_check))
    || (in_array($temp_plr[1],$team_check) && in_array( $temp_plr[2],$team_check))
) {
    $okey = false;
}
$temp\u plr
包括3个值,
$team\u check
也包括3个值。
我使用此代码生成的最终结果的图像:


正如你所看到的,在每一轮中,每个3号队的所有数字都是不同的。

以不同的方式看待它会更容易

按照您已经在做的操作,获取第一组三个阵列

然后,不只是生成一个新的三人组,看看它是否符合规则,而是让它符合规则

要做到这一点,从旧三人组的第一行选择一个数字,然后从第二行选择一个数字,然后从第三行选择一个数字,从而构建新三人组

例如,如果您的第一个三人组是:

1 2 3
4 5 6
7 8 9
您可以通过从每行中随机选取一个数字来生成一个新的三元组:

1 5 9
2 4 7
3 6 8

这保证符合规则,并且能够从任何给定的“旧三元组”生成所有此类结果。

但这并不能确保没有两个新的相等三元组,对吗?此外,它并没有涵盖所有可能的三个方面:(是的,但如果我使用48个数字,这也是可能的,我需要生成两个以上的重复,因为我需要将48个数字分成三个数组,每个数组有16个团队,每个团队包括3个用户,现在这3个用户必须在每三个数组中都是唯一的,这有点难以解释,我将在主帖子上传一个图像。你是吗试图生成所有可能的变化?就像所有符合规则的组合一样?规则是三个数字,从来不是两个数字已经在一个集中的集合,对吗?是的,基本上就是这样,但是有一个默认数组,它将被分成三个或更多的集合,每次它都必须回顾上一个数组如果组合是唯一的,我们会生成集合。数组总是一组数字吗?数组的长度总是9,因此集合总是包含3个集合,每个集合包含3个数字吗?不,这是一个简单的例子,事实上,它可以在3个数组中分离48个以上的数字,其中包含16个数组,例如包含一组2或3个数字(如图所示)。它不需要随机创建|好吧,我用一种简单的方法解决了这个问题。似乎有时候如果php错误地创建了第一个随机数,它会以一个无休止的循环结束,有时候它正确地创建了数字,只需要50个循环。所以现在,如果它创建了100个循环,我只需再次运行脚本,这意味着它出了问题,然后有时运行良好,这并不需要很长时间。