PHP - 检查重复的数组

时间:2014-04-30 13:07:22

标签: php

我有一个数组:

1,2,3,4,5,5,6,7,8,9

现在这个数组被分为三个数组(随机)
例如:

1,2,3  
4,5,6  
7,8,9  

现在我必须再次使用相同的数字创建3个数组(1-9) 但新数组不应包含与过去数组相同的数字;

1,3,5(不正确,3已经有1)

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

现在我找到了一种使用循环检测这种方法的方法,下面你会看到代码的一部分 $temp_plr是随机创建的新数字(3个编号数组) $team_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_plr包含3个值,$team_check还包含3个值 我用这段代码做出的最终结果的图像:
http://i57.tinypic.com/9hqv4w.png
就像你看到的那样,每个编号的3个团队中的编号与每一轮的编号不同。

1 个答案:

答案 0 :(得分:0)

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

获取您已经完成的第一个三重阵列。

然后,不是仅仅生成一个新的三重奏并且看它是否符合规则, make 它符合规则。

为此,通过从旧三重奏的第一行中挑选一个数字,然后从第二行中选择一个,然后从第三行中选择一个来构建新的三重奏。

例如,如果你的第一个三重奏是:

1 2 3
4 5 6
7 8 9

您可以通过从每行中选择一个随机数来生成新的三重奏:

1 5 9
2 4 7
3 6 8

这保证符合规则,并且能够从任何给定的旧三重奏中生成所有这样的结果"。