【问题标题】:Voting of five candidates and print out sum PHP投票五名候选人并打印总和 PHP
【发布时间】:2022-01-12 23:30:59
【问题描述】:

您的任务是编写一份选举申请,其中包含五位候选人,一次只能对其中一位候选人进行投票。将投票保存到文件 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>

示例输出

 Total votes: 15786.

我设法做到了这一点:

  <?php
$inputs = file('results.txt');

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: ",$add+1,".";
$file = 'results.txt';
readfile($file);

?>

我的结果告诉我:

implode(): Invalid arguments passed in
Total votes: 30.

【问题讨论】:

  • 我觉得我已经(最近)回答了这个问题。 stackoverflow.com/a/70054407/2943403人们从哪里复制这个网络表单?一些糟糕的教程?如果value&lt;option&gt; 的文本完全相同,则在&lt;option&gt; 中写入value 没有任何好处。如果您选择第一个&lt;option&gt;,则无需指定selected

标签: php html arrays


【解决方案1】:

在您的代码中,您以$fin=array(); 开头。但稍后在循环中,您将$fin 转换/替换为字符串。

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

所以这意味着$finimplode 方法内部,它是一个字符串,而不是一个数组。

$final = implode("\n", $fin);

Read about PHP implode()

【讨论】:

  • 抱歉,我在我的 IDE 上修复了代码,但忘记在帖子中修复它。但它仍然给出同样的错误。
  • 我相应地更新了答案。希望对您有所帮助。
猜你喜欢
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2021-07-22
  • 1970-01-01
相关资源
最近更新 更多