如何将数组随机拆分为 PHP 中的不同元素对?
How to split an array into pairs of different elements in PHP randomly?
示例:
$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"]]
我想要成对的不同值。
可能不是最有效的,但你会得到你想要的:
$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);
这是一个通过递归调用 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;
}
示例:
$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"]]
我想要成对的不同值。
可能不是最有效的,但你会得到你想要的:
$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);
这是一个通过递归调用 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;
}