2014-03-30 100 views
0

你好任何一个人都可以推荐我一个很好的功能,或者建议如何给候选人增加一个额外的积分并得到更多的选票?求和部分似乎工作正常,但在回应最终结果时,我希望它包含一个额外的点。谢谢! 任务:五位候选人的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

这是你的功课 – mesutozer

+0

不,这是一个自我学习试图提高我在PHP中的知识我是新来的PHP我已经尝试了所有我最好的花费时间来打印额外的一点,但不能拿出一个好的功能或方式 – user3358884

+0

好吧,我相信你,请找到我的回答低于 – mesutozer

回答

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]++; 
    } 
} 
+0

嗨,感谢你的时间,你试过了吗?它不是为我打印额外的点吗? – user3358884

+0

不需要tr年。我不是故意为你提供一个完整的代码。您可以在第二个循环中看到,我正在递增最高票数的候选人的投票数。在第二个循环结束时,您可以使用'print_r($ res);'查看计数。 – mesutozer

+0

据我的理解,我认为就是这样。那么你能告诉我什么是缺少的吗?我的意思是不要为我写代码,只是用言语告诉我。你知道我可以读的一个好的来源吗? – user3358884