问题描述
我正在努力使11名球员组成像板球之类的锦标赛,但是球队必须是独一无二的,这意味着同一队中没有球员两次出战 例如:-我有22位玩家
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
or we have 22 players in two teams
first team:-1,11
second team:-12,22
现在我需要一支像这样的独特球员的队伍 1,22,17
我尝试下面的代码
$candidates = array(1,12);
var_dump(getTeam($candidates));
function getTeam($candidates,$team_size = 3)
{
shuffle($candidates);
return array_chunk($candidates,$team_size);
}
但是这将给我12位候选人的输出,这将使团队形式成为12位候选人 有什么方法可以让22名队员组成队伍,队伍也必须使用简单的字符串,而不是任何var_dump或数组字符串。
解决方法
看来您走在正确的轨道上,您的职能是根据传来的候选人选出合适大小的随机团队。您可以利用它来获得单个团队。至于如何处理结果,它们只是arrays,因此您可以对它们进行任何操作-使用implode
将它们与逗号连在一起,然后将它们回显。
<?php
$candidates = array(1,2,3,4,5,6,7,8,9,10,11,12);
function getTeams($candidates,$team_size = 3)
{
shuffle($candidates);
return array_chunk($candidates,$team_size);
}
function getRandomTeam($candidates,$team_size = 3)
{
$teams = getTeams($candidates,$team_size);
return array_shift($teams);
}
$output = getTeams($candidates);
echo 'Teams:'.PHP_EOL;
foreach($output as $currTeam)
{
echo implode(',',$currTeam).PHP_EOL;
}
$output = getRandomTeam($candidates);
echo 'Random Team: ';
echo implode(',$currTeam).PHP_EOL;