我收到一个未定义变量$ answer1,2,3,4和5的错误

时间:2018-05-05 10:57:24

标签: php

这是我的代码,我得到一个错误的未定义索引q1,q2,q3,q4,q5请帮助,我尝试了几种不同的方法来解决问题是无法在任何地方找到任何解决方案,我是新的到php编程,目前我正在使用wampserver。我也附上了我的html文件。我的输入单选按钮的名称分别为每个问题q1,q2,q3,q4,q5

<?php
$answer1 = $_POST['q1'];
$answer2 = $_POST['q2'];
$answer3 = $_POST['q3'];
$answer4 = $_POST['q4'];
$answer5 = $_POST['q5'];
$totalcorrect = 0;
if($answer1 == "A") {$totalcorrect++;}
if($answer2 == "B") {$totalcorrect++;}
if($answer3 == "A") {$totalcorrect++;}
if($answer4 == "D") {$totalcorrect++;}
if($answer5 == "B") {$totalcorrect++;}
echo "total correct answers are".$total;?>
html code:
<div style="margin-top:10px;margin-right:85px;margin-left:100px;margin-   bottom:20px;background:rgba(0,0,0,0.5)">
//question 1   
<p style="color:white;font-family:courier;font-size:18px">1. Which of the following correctly declares an array?</p>  <br> 
       <input  class="exam-btn" type="radio" name="q1" id="q1-a" value="A" checked>
           <label for="q1-a" style="color:white;font-family:courier;font-size:18px">int array[10];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q1" id="q1-b" value="B">
           <label style="color:white;font-family:courier;font-size:18px">int array;</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q1" id="q1-c" value="C">
           <label style="color:white;font-family:courier;font-size:18px">array{10};</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q1" id="q1-d" value="D">
           <label style="color:white;font-family:courier;font-size:18px">array array[10];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <br><br><br><br>
   //question2
   <p style="color:white;font-family:courier;font-size:18px">2. What is the index number of the last element of an array with 9 elements?</p>  <br> 
       <input  class="exam-btn" type="radio" name="q2" id="q2-a" value="A">
           <label style="color:white;font-family:courier;font-size:18px">9</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q2" id="q2-b" value="B" checked>
           <label style="color:white;font-family:courier;font-size:18px">8</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q2" id="q2-c" value="C">
           <label style="color:white;font-family:courier;font-size:18px">0</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q2" id="q2-d" value="D">
           <label style="color:white;font-family:courier;font-size:18px">programmer defined</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <br><br><br><br>

<p style="color:white;font-family:courier;font-size:18px">3. Which of the following accesses the seventh element stored in array?</p>  <br> 
       <input  class="exam-btn" type="radio" name="q3" id="q3-a" value="A" checked>
           <label style="color:white;font-family:courier;font-size:18px">array[6];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q3" id="q3-b" value="B" >
           <label style="color:white;font-family:courier;font-size:18px">array[7];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q3" id="q3-c" value="C" >
           <label style="color:white;font-family:courier;font-size:18px">array(7);</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q3" id="q3-d" value="D" >
           <label style="color:white;font-family:courier;font-size:18px">array;</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <br><br><br><br>

<p style="color:white;font-family:courier;font-size:18px">4. Which of the following gives the memory address of the first element in array?</p>  <br> 
       <input  class="exam-btn" type="radio" name="q4" id="q4-a" value="A" >
           <label style="color:white;font-family:courier;font-size:18px">array[0];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q4" id="q4-b" value="B" >
           <label style="color:white;font-family:courier;font-size:18px">array[1];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q4" id="q4-c" value="C" >
           <label style="color:white;font-family:courier;font-size:18px">array[2];</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q4" id="q4-d" value="D" checked>
           <label style="color:white;font-family:courier;font-size:18px">none</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <br><br><br><br>

<p style="color:white;font-family:courier;font-size:18px">5. What will be the output of this program?</p>  <br> 
   <pre style="color:white;font-family:courier;font-size:18px">
           #include <stdio.h>

    using namespace std;

    int array1[] = {1200, 200, 2300, 1230, 1543};

    int array2[] = {12, 14, 16, 18, 20};

    int temp, result = 0;

    int main()

    {

        for (temp = 0; temp < 5; temp++) 

        {

            result += array1[temp];

        }

        for (temp = 0; temp < 4; temp++)

        {

            result += array2[temp];

        }

        cout << result;

        return 0;

    }

   </pre>
   </pre>
   <input  class="exam-btn" type="radio" name="q5" id="q5-a" value="A" >
           <label style="color:white;font-family:courier;font-size:18px">6553</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q5" id="q5-b" value="B" checked>
           <label style="color:white;font-family:courier;font-size:18px">6533</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q5" id="q5-c" value="C" >
           <label style="color:white;font-family:courier;font-size:18px">6522</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <input  class="exam-btn" type="radio" name="q5" id="q5-d" value="D" >
           <label style="color:white;font-family:courier;font-size:18px">12200</label>
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <br><br><br><br>
</div>

3 个答案:

答案 0 :(得分:2)

如果未发布字段$_POST['q1'],则“未定义变量” q1(等q2,...)。您应该使用isset()来避免警告。

$answer1 = isset($_POST['q1']) ? $_POST['q1'] : '';
$answer2 = isset($_POST['q2']) ? $_POST['q2'] : '';
$answer3 = isset($_POST['q3']) ? $_POST['q3'] : '';
$answer4 = isset($_POST['q4']) ? $_POST['q4'] : '';
$answer5 = isset($_POST['q5']) ? $_POST['q5'] : '';

自PHP 7.0起,您可以使用??运算符使用null coalescing operator

$answer1 = $_POST['q1'] ?? '';
$answer2 = $_POST['q2'] ?? '';
$answer3 = $_POST['q3'] ?? '';
$answer4 = $_POST['q4'] ?? '';
$answer5 = $_POST['q5'] ?? '';

最后(正如@ C2486指出的那样),最后一个变量应该是$totalcorrect而不是$total

echo "total correct answers are" . $totalcorrect;

答案 1 :(得分:-1)

您确定要通过邮寄请求发送数据吗?

试试这个:

<?php
$answer1 = $_REQUEST['q1'];
$answer2 = $_REQUEST['q2'];
$answer3 = $_REQUEST['q3'];
$answer4 = $_REQUEST['q4'];
$answer5 = $_REQUEST['q5'];
$totalcorrect = 0;
if($answer1 == "A") {$totalcorrect++;}
if($answer2 == "B") {$totalcorrect++;}
if($answer3 == "A") {$totalcorrect++;}
if($answer4 == "D") {$totalcorrect++;}
if($answer5 == "B") {$totalcorrect++;}
echo "total correct answers are".$total;?>

然后发送帖子请求,或者你可以发送这样的获取请求:

http://yourip:port/file.php?q1=A&q2=A&q3=A&q4=A&q5=A

答案 2 :(得分:-1)

在这种情况下,可能是您的$ _POST未定义。 所以要检查一下,请运行以下声明,

print_r($_POST);

让我知道你得到了什么,也请检查并显示你发送POST请求的代码。