示例:
$atletas = array("A", "B", "C", "D", "E", "Bye", "Bye", "Bye");
我的功能:
function sortear_grelha($atletas) {
shuffle($atletas);
$atletas = array_chunk($atletas, 2);
return $atletas;
}
预期结果,例如:
[["A","Bye"],["C","Bye"],["Bye","D"],["B","E"]]
我得到的输出:
[["A","Bye"],["Bye","Bye"],["C","D"],["B","E"]]
我想要一对不同的值。
这里有一个通过递归调用sortear_grelha()
直到一对中没有重复的方法:
function sortear_grelha($atletas) {
shuffle($atletas);
$result = array_chunk($atletas, 2);
if(array_map('array_unique', $result) != $result) {
return sortear_grelha($atletas);
}
return $result;
}
可能不是最高效的,但你会得到你想要的:
$first = array_rand($atletas);
$second = $first;
while($atletas[$second] == $atletas[$first])
{
$second = array_rand($atletas);
}
return array($atletas[$first], $atletas[$second]);
这将是您的函数:
function sortear_grelha($atletas){
shuffle($atletas);
$atletas_new = array_chunk($atletas, 2);
$recall = false;
foreach($atletas_new as $a){
if($a[0] == $a[1]){
$recall = true;
break;
}
}
if($recall){
sortear_grelha($atletas);
}
else{
return $atletas_new;
}
}
调用该函数:
$atletas = array("A", "B", "C", "D", "E", "Bye", "Bye", "Bye");
$atletas_new = sortear_grelha($atletas);
print_r($atletas_new);