【问题标题】:php count radio valuesphp计算单选值
【发布时间】:2018-09-29 16:59:33
【问题描述】:

我得到了一个包含 20 个问题的列表,其中有 A 或 B 答案,对于结果,我需要将某些答案一起计算以获得分数,并且它的 A 和 B 混合。

Question 1 <input type="radio" name="1" value="A" /> 
           <input type="radio" name="1" value="B" />
Question 2 <input type="radio" name="2" value="A" /> 
           <input type="radio" name="2" value="B" />
Question 3 <input type="radio" name="3" value="A" /> 
           <input type="radio" name="3" value="B" />

$result1 = $1A + $2B + $4A + $7B etc (count total of these answers)
$result2 = $3B + $5B + $6B etc

结果应该是数字,使用复选框很容易,因为名称是唯一的,所以值可以是 1,但是对于收音机,我不知道还有很多“if 1=B then $var++”,但是我相信有更简单的方法。

【问题讨论】:

  • 名称属性应该是文本而不是数字。将值分别设置为 0 或 1 并计数。使用数组作为名称,如 name="answers[]"... google 会给你更多的例子
  • 您可以使用name="some_name[]" 来解答您想一起讨论的所有问题。 [] 使得 php 接收一个名为 some_name 的数组,其中包含具有此名称的选定无线电的数量。那么你可以简单地使用count ($_GET['some_name']) 来获取一个数值。
  • with name="some_name[]" 我可以计算总数,但我不需要所有 A 或 B 答案,而是 1A+4B+5B+7A 等,我需要能够计算具体问题结果一起。
  • 并且所有单选按钮都是 some_name[] 您只能为所有问题选择 1 个答案,而不是每个问题选择 1 个答案。它并不像看起来那么容易:(

标签: php radio-button


【解决方案1】:

给你:

<?php
  var_dump($_POST);

  /*
  @param array $userInput - just the $_POST
  @param array $expected must be in format : [
    [1,'A'], 
    [2,'B']
    ]
  @return int
  */
  function countExpectedAnswers(array $userInput, array $expected) /*: int*/{
    $result = 0;
    foreach($expected as $ex){
        if(isset ($userInput[$ex[0]]) && $userInput[$ex[0]] === $ex[1]){
            $result ++;
        }
    }
    return $result;
  }

  $expectedAnswers = [
    [1,'A'],
    [2,'A'],
    [3,'B']
  ];

  echo 'Answered correctly: ' . countExpectedAnswers($_POST,$expectedAnswers);
  ?>

  <form method = 'post'>
    <div>
    Question 1 <input type="radio" name="1" value="A" > 
               <input type="radio" name="1" value="B" >
    </div>        

    <div>
    Question 2 <input type="radio" name="2" value="A" > 
               <input type="radio" name="2" value="B" >
    </div>         

    <div>
    Question 3 <input type="radio" name="3" value="A" > 
               <input type="radio" name="3" value="B" >

    </div>


    <input type = 'submit' value = 'go'>
  </form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2011-07-30
    相关资源
    最近更新 更多