2013-07-06 4 views
0
<?php 
$ans=$_REQUEST['ans']; 
$qes=$_REQUEST['qes']; 
$ra=$_REQUEST['right_op']; 
$count=0; 
for($i=0; $i<count($ans); $i++) 
{ 
    echo "Question".$qes[$i]"<br>"; 
    echo "Ans".$ans[$i]"<br>"; 
    echo "Right Option".$ra[$i]."<br>"; 
    if(isset($ans[$i]) == isset($ra[$i])) 
    { 
     $count++; 
    } 
} 
?> 

когда представить первую страницу, то это показывает

Примечание: Undefined смещение: 1 в C: \ XAMPP \ HTDOCS \ result.php на линии 9

Первая страница, на которой размещены данные.

<?php 
$i=1; 
$x=0; 
$y=0; 
$z=0; 

do{ 
    ?> 
      <tr> 
       <td width="30"></td> 
       <td width="30" height="27"><?php echo "$i";?></td> 
       <td width="493"><?php echo $row_question['question']; ?> 
       <input type="hidden" name="q_id[<?php// echo $y; ?>]" id="q_id" value=" <?php echo $row_question['q_id']; ?>" /> 
       <input type="hidden" name="qes[<?php echo $y; ?>]" id="qes" value="<?php  echo $row_question['question']; ?>" /><input name="right_op[<?php echo $z; ?>]"  type="hidden" id="right_op" value="<?php echo $row_question['right_op']; ?>" /></td> 
      </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td height="59" align="right"><h3>A)</h3> 
       <h3>B)</h3> 
       <h3>C)</h3> 
       <h3>D)</h3></td> 
       <td><h3> 
       <label> 
        <input type="radio" name="ans[<?php echo $x; ?>]" value="A" id="ans_0"  /> 
         <font color="#FFFFFF"><?php echo $row_question['op_a']; ?></font> </label> 
       <br /> 
       <label> 
        <input type="radio" name="ans[<?php echo $x; ?>]" value="B" id="ans_1"  /> 
        <font color="#FFFFFF"><?php echo $row_question['op_b']; ?></font> </label> 
       <br /> 
       <label> 
        <input type="radio" name="ans[<?php echo $x; ?>]" value="C" id="ans_2"  /> 
        <font color="#FFFFFF"><?php echo $row_question['op_c']; ?></font> </label> 
       <br /> 
       <label> 
        <input type="radio" name="ans[<?php echo $x; ?>]" value="D" id="ans_3"  /> 
        <font color="#FFFFFF"><?php echo $row_question['op_d']; ?></font> </label> 
       <br /> 
       </h3></td> 
      </tr> 

<tr> 
    <td height="17" colspan="3"><hr /></td> 
    </tr><?php 
    $i++; 
    $x++; 
    $y++; 
     $z++; 
    } while ($row_question = mysql_fetch_assoc($question)); ?> 

Что не так в этом коде. Пожалуйста, расскажите мне подробнее.
Спасибо.

+0

Возможный дубликат [PHP: «Примечание: неопределенная переменная» и «Уведомление: Неопределенный индекс»] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined- index) – mario

ответ

2

Всегда используйте isset() перед доступом

if (isset($ra[$i]) && isset($ans[$i]) && isset($qes[$i])){ 
    // your code 
} 

или

array_key_exists($i, $ra); 

или

+0

@Mitev Не работает Пожалуйста, укажите другое решение. – Subhajit

+1

@SubhajitSarkar вы должны сделать то же самое также с $ ans и $ ques –

+0

Пожалуйста, ознакомьтесь с деталями первой страницы. – Subhajit

0

Похоже, вы ожидать, что все массивы, чтобы быть того же размера, что не относится к $ra, который меньше, чем другие массивы, поэтому

echo "Right Option".$ra[$i]."<br>"; 

вызывает уведомление. Похоже, вам нужно исправить свой размер $ra.

+0

Тем не менее, если существует '$ _REQUEST ['right_op']' вообще, и это массив, '$ ra [0]' не должен давать никаких проблем. – icedwater

+1

, но он не в $ ra [0], он в $ ra [1]: «Неопределенное смещение: 1» – cori

+2

@icedwater нет правила, у массива должно быть 0 ключей в php – AD7six

0

$ra не имеет такого количества элементов в массиве, как $ans, поэтому, когда вы нажмете на вторую итерацию цикла, в отображении $ra[1] ничего нет. Вам нужно выяснить, почему длина $ra и $ans различны - без дополнительной информации о том, что вы делаете, нам сложно знать.

Как указывает @Nikola, вы всегда должны проверить, чтобы убедиться, что есть что-то в индексе, к которому вы обращаетесь, прежде чем пытаться его вывести, используя isset(). Независимо от того, действительно ли это не должно быть в $ra[1], когда есть что-то в $ans[1], это то, на что вы можете ответить.

Вывод много из вашего кода, похоже, что $ ra предназначен для указания правильного ответа. В этом случае их будет только один, поэтому вы должны использовать $ra[0] вместо $ra[$i], который всегда будет показывать первый элемент массива $ ra. Конечно, я могу неверно истолковать намерение вашего кода, поэтому YMMV.

+0

См. Информацию о первой странице. – Subhajit