问题描述
使用 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 (将#修改为@)