2014-04-02 56 views
0

任何人都可以幫助我的代碼?這裏是我得到的錯誤,「警告:implode():傳遞的參數無效」我希望輸出打印總票數,包括給予勝利者的額外1分,最後打印包括額外投票在內的選票結果爲表格中的獲勝者。PHP總得票和獎勵加分

1|4 
2|3 
3|6 
4|3 
5|9 

這裏是形式和代碼:

<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> 



<?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) { 
    $res[$candidate]++; 
    $fin=$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); 
?> 
+0

您將fin聲明爲數組,然後將其重新聲明爲字符串$ fin = $ candidate。 「|」 。 $水庫[$候選人]。 ..因此它不再是一個數組,不能傳遞給implode – clancer

+0

一個數據庫會使這一百萬倍easer –

回答

0

我也猜你想要的結果被追加到鰭片陣列不是一個字符串覆蓋它,你可以做到這一點與

$fin[] = $candidate . "|" . $res[$candidate];

+0

不,我真的想用新的結果覆蓋它。所以當我嘗試錯誤消失了,但它只是打印第一行。 – user3358884