PHP投票的五名候选人和印刷总票数

时间:2014-03-30 02:17:52

标签: php

你好,任何人都可以向我推荐一个好的功能,或者建议如何为候选人增加一点额外的点数?求和部分似乎工作正常,但在回应最终结果时,我希望它包含一个额外的点。谢谢!的任务:

你的任务是编写一个包含五个候选人的选举申请表,其中一次只能投票一个。将已投票的投票保存到文件results.txt。此文件中有五行。每一行都有候选人选举号码(1-5)并获得投票。选举号码和收到的选票用|分隔字符。因此文件结构如下所示:

1|2
2|6
3|8
4|3
5|10

您的任务是编写一个PHP脚本,在投票后更改results.txt,以便投票的候选人获得一次额外的投票。该程序应打印包括最新投票在内的总投票数。使用的表格如下所示:

<form action="voting.php" method="get">

Choose your candidate:

<select name="candidate">

<option value=1 selected>1</option>        

<option value=2>2</option>

<option value=3>3</option>

<option value=4>4</option>

<option value=5>5</option>

</select>

<br>

<input type="submit" value="Send">                  

</form>


Example output


Total votes casted: 12 votes.

代码:

 <?php
$inputs = file('results.txt');
$sum = 0 ;
$res = array();

foreach ($inputs as $line) {
  $var = explode('|', $line);
  $res[$var[0]] = $var[1];
  $add= $add +  $var[1];
}
$fin=array();
$maxVotes=max($res);
foreach ($res as $candidate => $voteCount) {
  if ($voteCount == $maxVotes) {
  $fin=$candidate . "|" . $res[$candidate];
    $res[$candidate]++;

  }
}
$final = implode("\n", $fin);
$fp = fopen('results.txt', 'w');
fwrite($fp, $final);
fclose($fp);
echo "Total votes casted: ",$add+1," votes.";
$file = 'results.txt';
readfile($file);
?>

1 个答案:

答案 0 :(得分:0)

您可以在阅读文件时构建数组:

$res = array();

foreach ($inputs as $line) {
  $var = explode('|', $line);
  $res[$var[0]] = $var[1];
}

现在,数组包含候选ID作为键,投票计数作为值。因此,例如候选人4的投票数为$res[4]

您可以按max($res)找到最多投票数。

投票最多的候选人可以通过另一个循环找到: (假设max($res)存储在名为$maxVotes的变量中。

foreach ($res as $candidate => $voteCount) {
  if ($voteCount == $maxVotes) {
    $res[$candidate]++;
  }
}