Я хочу сделать тест, и вот мой массив:
$questions = array("1+1"=>2,"5+2"=>7,"5+9"=>14,"3+5"=>8,"4+6"=>10,"1+8"=>9,"2+7"=>9,
"6+7"=>13,"9+3"=>12,"8+2"=>10,"5+5"=>10,"6+8"=>14,"9+4"=>13,"7+8"=>15,
"8+9"=>17,"4+8"=>12,"7+1"=>8,"6+3"=>9,"2+5"=>7,"3+4"=>7);
shuffle($questions);
foreach($questions as $key => $value) {
echo $key.' ';
}
Однако из приведенного выше кода я получаю вывод, подобный следующему:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //Wrong!
Почему я получаю этот вывод? Я хочу получить все вопросы. Как я должен получить это?
Из руководства по shuffle()
(выделение мое):
Замечания: Эта функция назначает новые ключи для элементов в массиве. Он удалит все существующие ключи, которые могли быть назначены, вместо того, чтобы просто переупорядочивать ключи.
Вот решение для ассоциативных массивов из Комментарии этой страницы:
function shuffle_assoc(&$array) {
$keys = array_keys($array);
shuffle($keys);
foreach($keys as $key) {
$new[$key] = $array[$key];
}
$array = $new;
return true;
}
Кредиты идет к: «Ахмад в Ахмаднассри точка ком»
Других решений пока нет …