2017-02-03 21 views
0

Я делаю приложение викторины и в настоящее время есть таблица этого формата:Как перетасовать ответы в моем массиве с помощью foreach?

| id |  question  | option1 | option2 | option3 | answer | 
-------------------------------------------------------- 
| 1 | What is my name? | Dave | Bob | Charles | Linda | 

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

<?php 
//Connection code included above 
$query="SELECT * FROM MatQuiz";       

$result = mysql_query($query, $connect); 

?> 

<?php         
    while($row = mysql_fetch_assoc($result)) {         

     echo $row['id'] . '. '; 
     echo $row['question'] . '<br><br>';       

?> 

    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['option1']; ?>"><?php echo $row['option1'] ?><br> 
    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['option2']; ?>"><?php echo $row['option2']; ?><br> 
    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['option3']; ?>"><?php echo $row['option3']; ?><br> 
    <input type="radio" name="ID <?php $row['id']; ?>" value="<?php $row['answer']; ?>"><?php echo $row['answer']; ?><br><br> 

<?php 

    }        

?> 

Этот код выводит все мои вопросы в моей таблице DB в правильном порядке, с соответствующими переключателями и ответами.

То, что я хочу сделать, это перетасовать организации:

$row['option1']; 
$row['option2']; 
$row['option3']; 
$row['answer']; 

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

Как я могу перетасовать организацию ответов, чтобы они не отображались в одном порядке каждый раз?

+0

Почему вы не можете напрямую использовать '$ строки [ ''] option2' перед '$ row ['option1']' непосредственно? –

+0

для каждой строки базы данных, создайте массив $ Options. Добавьте каждую строку и ответ в массив $ Options. Затем используйте shuffle ($ Options): http://php.net/manual/en/function.shuffle.php. Затем используйте forloop для представления значений $ Option – JustBaron

+0

Sunny, потому что тогда все параметры появятся в том же порядке, но сначала начнется выбор 2 – Kieran

ответ

0

Для каждой строки базы данных создайте массив из $ Options. Добавьте каждую строку и ответ в массив $ Options.

Затем используйте перетасовать ($ Options): PHP Shuffle

Затем используйте forloop представить за $ Вариант значения

<?php         
while($row = mysql_fetch_assoc($result)) { 
$Options = array($row['option1'], $row['option2'], $row['option3'], $row['answer']); 
shuffle($Options);       

    echo $row['id'] . '. '; 
    echo $row['question'] . '<br><br>';       

foreach($Options as $Option){?> 
    <input type="radio" name="ID <?php echo $row['id']; ?>" value="<?php echo $Option; ?>"><?php echo $Option; ?><br> 
<?php } 
} 
?> 
+0

это не должно быть пропущено, поскольку оно обеспечивает правильное решение вопроса. – JustBaron

+0

возможно из-за отсутствия объяснения того, что вы сделали. – JustOnUnderMillions

+0

Справедливо, подумал, что моего предыдущего комментария к вопросу будет достаточно. Я обновлю ответ. Спасибо за совет. – JustBaron

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

  • Нет связанных вопросов^_^