2016-04-01 3 views
0

У меня есть функция внизу, которая будет задавать один из вопросов массива случайным образом, и ответ должен быть отправлен в базу данных вместе с номером индекса заданного вопроса сохранен и использован снова на событии, таком как восстановление пароля и т. д.PHP Получить один индекс и элемент массива

Моя проблема в том, что я не смог найти способ или вариант использования для получения как номера индекса, так и вопроса, задаваемого вместе.

Я пробовал ключ, search_array и другие способы, но пока не помог.

Пожалуйста, помогите

Благодарности

<?php 
    function secQ(){ 
     $questions = array(); 
     $questions[0] = "first question"; 
     $questions[1] = "second question"; 
     $questions[2] = "third question"; 
     $questions[3] = "fourth question"; 
     $questions[4] = "fifth qestion"; 
     $questions[5] = "sixth question"; 
     $rand_keys = array_rand($questions, 2); 
    } 
    ?> 
+1

вы ничего не возвращаются из функции –

+0

Good вызовов на этом Mawia HL –

ответ

0

Вот способ вернуть ключ и вопрос в массиве к абоненту.

<?php 
function secQ(){ 
    $questions = array(); 
    $questions[0] = "first question"; 
    $questions[1] = "second question"; 
    $questions[2] = "third question"; 
    $questions[3] = "fourth question"; 
    $questions[4] = "fifth qestion"; 
    $questions[5] = "sixth question"; 

    $rand_key = array_rand($questions, 1); 

    return array($rand_key, $questions[$rand_key]); 
} 

$q = secQ(); 
echo 'key is ' . $q[0]; 
echo 'question is ' . $q[1]; 
?> 
+0

Это то, что я искал, большое спасибо, теперь я должен получить ключ и сохранить в базе данных, когда это необходимо. –

+0

Я добавил скрипт, и он работал отлично, хотя иногда ключ для вопроса, который сохраняется в базе данных, не тот, который я вижу в форме, я отредактирую свой вопрос здесь с вашего ответа, спасибо за вашу помощь заранее , –

+0

Боюсь, вы не должны этого делать. На исходный вопрос ответили, и если другие найдут этот вопрос в поиске, этот ответ не будет соответствовать вашему второму вопросу. Какой смысл этого сайта, то есть предоставление вопросов с возможностью поиска с ответами. Я откажусь от вашего вопроса. Задайте еще один вопрос, я буду следить за ним. – RiggsFolly

0

Вы, вероятно, следует сделать это вручную. Ниже приведена общая функция, которая должна работать для любого входного массива.

Прежде всего создайте случайное число, основанное на размере массива, затем верните ключ и значение, соответствующие этому номеру. Примечание. Я делаю это, чтобы позволить методу работать с ассоциативными массивами.

function randomKeyValueFromArray($array) { 
     $randomKey = rand(0,count($array)); 
     return [ array_keys($array)[$randomKey], array_values($array)[$randomKey] ]; 

} 

Как использовать:

$questions = array(); 
$questions[0] = "first question"; 
$questions[1] = "second question"; 
$questions[2] = "third question"; 
$questions[3] = "fourth question"; 
$questions[4] = "fifth qestion"; 
$questions[5] = "sixth question"; 

$randomQuestion = randomKeyValueFromArray($questions); 

$questionKey = $randomQuestion[0]; 
$questionValue = $randomQuestion[1]; 
0

Я нашел это решение

<?php 
function secQ() 
{ 
    $questions = [ 
     "first question", 
     "second question", 
     "third question", 
     "fourth question", 
     "fifth qestion", 
     "sixth question", 
    ]; 

    $keys = array_keys($questions); 

    $rand_keys = array_rand($keys, 2); 

    $result = array(); 
    foreach ($rand_keys as $key) { 
     $result[$key] = $questions[$key]; 
    } 
    return $result; 
} 

var_dump(secQ()); 

Первый результат:

array(2) { 
    [0]=> string(14) "first question" 
    [1]=> string(15) "second question" 
} 

Второй результат:

array(2) { 
    [4]=>string(13) "fifth qestion" 
    [5]=>string(14) "sixth question" 
} 
Смежные вопросы