2015-10-14 5 views
-1

Я разрабатываю приложение для викторины на PHP, из 30 вопросов, я хочу показать 10 случайных вопросов для пользователей. Используя многомерный массив, я сохраняю вопросы с параметрами. Невозможно получить доступ к случайному результату из массива.Shuffle Multidimentional Array

$shop = array(array(question => "Q.1. What term describes hardware and software designed to help people with disabilities?", 
         option1 => "Computer aided development", 
         option2 => "Assistive technology", 
         option3 => "Electronic learning products", 
         option4 => "Specialized support", 
        ), 
       array(question => "Q.2. What is the process of simultaneously recording and compressing audio called?", 
         option1 => "Ripcording", 
         option2 => "Audio filtering", 
         option3 => "Signal processing", 
         option4 => "Encapsulating", 
        ), 
       array(question => "Q.4. Select the correct order:", 
         option1 => "3D video games", 
         option2 => "Virtual reality", 
         option3 => "Hologram", 
         option4 => "4D Max", 
        ), 
); 

$rand_keys = array_rand($shop,2); 

$shop[$rand_keys[0]]; 
+0

Попробуйте 'print_r ($ магазин [$ rand_keys [0]]);' Check [это] (https://eval.in/450432) –

+1

Ваш код работает нормально? http://codepad.viper-7.com/sZVTeB Какие проблемы у вас есть – Steve

+0

'$ shop [$ rand_keys [0]];' - массив. вы должны иметь возможность получить доступ к этому вопросу, выполнив '$ shop [$ rand_keys [0]] ['question']'. Код также ничего не делает с массивом. Я предполагаю, что вы хотели эхо или сохранить результат в переменной? –

ответ

1

Как уже упоминалось ранее, ваш код работает отлично: P

Если вы хотите сохранить результат, все, что вам нужно сделать, это $randomQuestion = $shop[$rand_keys[0]];

Для доступа к полю вопрос, просто сделать $randomQuestion['question'] или $shop[$rand_keys[0]]['question'];

Если вы хотите, чтобы захватить 10 случайных вопросов:

$ rand_keys = array_rand ($ shop, 10);

$questions = array(); // This array will hold the 10 random questions 
foreach($rand_keys as $rand_key){ 
    array_push($questions, $shop[$rand_key]); // This will add the current random question into $questions 
} 

$questions - это массив, содержащий ваши 10 вопросов.

если вы хотите напечатать все вопросы,

foreach ($questions as $question){ 
    echo $question['question']. "<br>"; 
    echo $question['option1']. "<br>"; 
    echo $question['option2']. "<br>"; 
    echo $question['option3']. "<br>"; 
    echo $question['option4']. "<br>"; 
} 
+0

Как сохранить каждую опцию отдельно? как опция1, option2 и т. д. – Roger

+0

'$ option1 = $ shop [$ rand_keys [0]] ['option1'];' будет делать трюк –

+0

Что делать, если мне нужно сохранить 10 вопросов, мне нужно сделать $ shop [$ rand_keys [0]] ['question'] до $ shop [$ rand_keys [9]] ['question'] – Roger