PHP: ошибка цикла

У меня проблема с циклом for:

Он перекликается с $question[0] и перекликается с $question[1], когда я отвечал на вопрос $question[0].

Проблема в том, что когда я отвечаю на $question[1], он повторяет $question[0] вместо $question[2] и продолжает цикл между $question[0] и $question[1].

Может что-то не так с массивом ..?

<?php
$question = array(
  0 => "<form action=\"\" method=\"get\"> Q1<br>
    <input type=\"radio\" name=\"q0\" value=\"tr\"> A <br>
    <input type=\"radio\" name=\"q0\" value=\"ok\"> B <br>
    <input type=\"radio\" name=\"q0\" value=\"fa\"> C &nbsp;&nbsp;&nbsp;&nbsp;
    <input type=\"submit\" value=\"대답하기 Answer\"> 
    </form>",
  /* 1~4 is same thing with different name (ex. q1, q2..) */

$a = array( @$_GET['q0'], @$_GET['q1'], @$_GET['q2'], @$_GET['q3'], @$_GET['q4']);

$point = array(0,0,0,0,0);  

for ($i = 0; $i < 5; $i++) {
    ob_start();
    echo $question[$i];

    if (isset($a[$i]) == true) {
      if ($a[$i] == "tr") {
        $point[$i] = 20;
        ob_end_clean();
      }
      elseif ($a[$i] == "ok") {
        $point[$i] = 10;
        ob_end_clean();
      }
      else {
        $point[$i] = 0;
        ob_end_clean();
      }
    } else {
        break;
    }
}
?>

Где ваши значения $question и $a?

Nawin 03.04.2018 15:34

Используйте var_dump() в каждом состоянии, и вы обнаружите проблему

ArmKh 03.04.2018 15:35

@Lee ваш цикл начинается с позиции 0, поэтому вы будете всеми способами сначала пытаться получить $ question [0], и если $ a [1] неверно, он убьет весь цикл, что также может объяснить, почему вы не можете добраться до $ question [2] ... но я думаю, вам нужно добавить немного кода, чтобы показать, что здесь происходит.

John 03.04.2018 15:51

@Lee, ваш цикл срабатывает каждый раз после ответа на вопрос?

ArmKh 03.04.2018 15:57

@Nawin Я добавил предыдущий код, чтобы показать значения $ question и $ a!

Lee 03.04.2018 16:01

@ArmKh Это работает, но только между $ question [0] и $ question [1] это бесконечный цикл.

Lee 03.04.2018 16:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
59
1

Ответы 1

В вашем массиве $ question только один элемент по индексу 0. Попробуйте ввести имя формы и используйте имя формы, чтобы получить параметр от $_Get. После сброса результата вы должны получить именно то, что вам нужно.

например с POST

<form action = "" method = "POST" name = "myForm">
  <input type = "radio" name = "myform[gender]" value = "true"> A<br>
  <input type = "radio" name = "myform[gender]" value = "false"> B<br>
  <input type = "radio" name = "myform[gender]" value = "other"> C
  <input type = "submit">
</form>

и в PHP: $_POST["myForm"] должен быть опубликован в форме.

if (isset($_POST['myform'])) {
    $values = $_POST['myform'];
}

Другие вопросы по теме