如何从给定的玩家中打造许多独特的团队

问题描述

我正在努力使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;