所有
瑞士配对算法中的一个步骤需要创建具有相同分数的玩家组。
E.x.
P1 - 3
P2 - 3
P3 - 2
P4 - 1
P5 - 1
P6 - 1
所以这应该创建3组,即包含阵列1的3个阵列:{P1,P2};数组2:{P3};数组3:{P4,P5,P6}。
这是动态变化的。
在Java中,我们可以拥有一个arraylist数组并使其工作(我能想到的解决方案之一)。我们如何才能在PHP中实现这样的目标?
答案 0 :(得分:2)
你也可以在PHP中使用数组:
$array1 = array($P1, $P2);
$array2 = array($P3);
$array3 = array($P4, $P5, $P6);
你可能也希望将它堆叠到另一个数组中(按分数分组,可能就是你所认为的“java中的arraylist”):
$players = array();
foreach(array($P1, ..., $P5) as $player) {
$score = $player->score;
$players[$score][] = $player;
}
var_dump($players);
但是,如果任何玩家组中的值发生变化,则必须更新数据:
class Pairing
{
private $players;
public function __construct(array $players) {
$this->players = $players;
}
public function getPairing() {
$players = array();
foreach($this->players as $player) {
$score = $player->score;
$players[$score][] = $player;
}
return $players;
}
}
$pairing = new Pairing(array($P1, ..., $P5));
...
var_dump($pairing->getPairing());
或选择最有效处理事件的选择模式。