2015-12-28 2 views
-2

Я получаю некоторые ошибки, когда я выполняю свой код, чтобы получить строку, которая отображает мои вопросы и ответы в викторине с помощью php. ком/ZCy6G.jpgКак создать викторину с PHP?

+1

Было бы полезно знать, какие ошибки вы получаете ... –

+0

улучшенной верстку –

+0

так, что вы хотите? – gypsyCoder

ответ

0

Моя текущая версия php не поддерживает javascript-стиль конструктора литералов массива, поэтому я должен использовать оригинальный стиль. Приведенный ниже код имеет минимальный стиль, но, похоже, корректно выводит вопросы и параметры.

<html> 
    <head> 
     <title>quiz</title> 
     <style> 
      form{ display:block; float:none; width:90%;margin:1rem auto;box-sizing:content-box;padding:1rem;border:1px solid black; } 
      ul{} 
      li{} 
      h3{margin:2remauto 1rem auto;} 
     </style> 
    </head> 
    <body> 
    <?php 
     $quizHistoryQ = array(
      "Q1" => array(
       "question"=>"This is the First question", 
       "options" => array(
        "this is option 1", 
        "this is option 2", 
        "this is option 3" 
       ), 
       "answer" =>2 
      ), 

      "q2" => array(
       "question"=>"This is the Question String for question 2", 
       "options" => array(
        "this is option A", 
        "this is option B", 
        "this is option C"), 
       "answer" =>1 
      ), 

      "q3" =>array(
      "question"=>"This is the Question String for question 3", 
      "options" => array(
       "this is option X", 
       "this is option Y", 
       "this is option Z" 
      ), 
      "answer" =>0 
      ) 
     ); 



     echo " 
     <form name='quiz' method='post'>"; 

     foreach($quizHistoryQ as $index => $arr){ 

      $question=$arr['question']; 
      $options=$arr['options']; 
      $answer=$arr['answer']; 

      echo '<h3>Question: '.$index.': '.$question.'</h3>'; 
      echo '<ul>'; 
      foreach($options as $i => $option) echo "<li><input type='radio' name='{$index}[]' value='{$i}'/>{$option}"; 
      echo '</ul>'; 
     } 

     echo " 
      <input type='submit' name='sub' value='Submit'/> 
     </form>"; 

    ?> 
    </body> 
</html> 
+0

Привет, спасибо. Код работает отлично :) – JLo

+0

вы должны подумать о принятии ответа, чтобы показать, что проблема решена – RamRaider

0

Ошибка вы видите массив Обеспокоенность по преобразованию строки, который вызывается с помощью этой линии:

echo $key . " : " . $value . "<br>"; 

Если вы var_dump ($ значение) внутри этого цикла, вы будете см., что значение $ иногда является массивом, а не строкой. Вы можете перебрать значения в массиве $ значение следующим образом:

foreach($quizHistoryQ[$keys[$i]] as $key => $value) { 
    echo $key . " : "; 
    //note: in OP's specific example, only is_array test is needed. is_object test can be omitted in this case since we know $value will never be an object 
    if (is_array($value) || is_object($value)) { 
     foreach($value as $item) { 
      echo $item . '<br />'; 
     } 
    } else { 
     echo $value . '<br />'; 
    } 
} 

Это тесты, чтобы увидеть, если $ значение является массивом или строкой. Если это массив, он проходит через него. В противном случае это просто эхо-строка.

Смежные вопросы