如何解决如何拥有 = 使用投票表?
使用 https://github.com/julien-boudry/Condorcet
考虑这种形式:
<html>
<body>
<form method="post">
Wingspan: <select name="item[Wingspan]" id="Wingspan">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br />
Scythe: <select name="item[Scythe]" id="Scythe">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br />
Spirit Island: <select name="item[Spirit Island]" id="Spirit Island">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br />
Everdell: <select name="item[Everdell]" id="Everdell">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select<br />
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
那么这段代码
arsort($_POST['item']);
foreach ($_POST['item'] as $game => $priority) {
$games[] = $game;
}
输出:
Array
(
[0] => Wingspan
[1] => Scythe
[2] => Spirit Island
[3] => Everdell
)
然后是这个孔多塞:
Condorcet::setDefaultMethod('Schulze'); // Argument: A supported method
$election = new Election ();
$election->addCandidate(new Candidate ('Wingspan'));
$election->addCandidate(new Candidate ('Scythe'));
$election->addCandidate(new Candidate ('Spirit Island'));
$election->addCandidate(new Candidate ('Everdell'));
$Vote = new Vote ( $games );
$election->addVote($Vote);
print_r($Vote->getSimpleRanking());
echo 'Schulze winner is : ' . $election->getWinner('Schulze')->getName() . '<br />';
不过效果很好,但如果两个候选人的排名相同怎么办?如果必须有 = 呢?我知道解决方案是 foreach() 但我坚持使用它?具有相同等级的多个项目应该像这样构建:
4 => ['item1','item2']
但如何?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。