我有两个相同的整数数组。我想要做的是将两个阵列混洗,这样就不会重复数字并且它们不匹配。例如:
如果数组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(),输出将被正确洗牌,两个数组中没有重复的数字,但是我仍然得到匹配。有帮助吗?
答案 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);