在没有匹配的情况下改组2个相同的数组,PHP有帮助吗?

时间:2011-11-22 05:04:50

标签: php arrays shuffle

我有两个相同的整数数组。我想要做的是将两个阵列混洗,这样就不会重复数字并且它们不匹配。例如:

如果数组1有4个整数{1,2,3,4},则Array2有4个整数{1,2,3,4}。我需要对它们进行混洗,因此Array1中的元素与数组2中的元素不匹配。

到目前为止我的代码:

    $Array1 = array();
    $Array2 = array();

while($row = mysql_fetch_assoc($result))
{   
    $Array1[] = $row['id'];
    $Array2[] = $row['id']; 
}
shuffle($Array1);
shuffle($Array2);
array_unique($Array1);
array_unique($Array2);
    for($i = 0; $i < sizeof($Array1); $i++)
    {
        if($Array1[$i] == $Array2[$i])
        {
            array_rand($Array1);
            array_rand($Array2);
            array_unique($Array1);
            array_unique($Array2);
        }
    }

如果没有if语句中的array_rand()和array_unique(),输出将被正确洗牌,两个数组中没有重复的数字,但是我仍然得到匹配。有帮助吗?

2 个答案:

答案 0 :(得分:0)

在我看来,这应该足够了:

shuffle($array1);
$array2 = $array1;
$array2[] = array_shift($array2);

这取决于你真正需要它的随机性。

答案 1 :(得分:0)

$Array1 = $Array2 = array(1,2,3,4);
$Array1 = array_unique($Array1); 
$Array2 = array_unique($Array2);

if (count($Array1) == 1 && count($Array2) == 1 && $Array1 == $Array2) {
   die("Arrays can never be randomized differently");
}  

shuffle($Array1);

do {
   shuffle($Array2);
}  
while (array_intersect_assoc($Array1, $Array2));

var_dump($Array1, $Array2);