我想做一个测验,这是我的数组:
$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!
为什么我得到这个输出?我想得到每一个问题。我应该怎么做到?
答案 0 :(得分:3)
来自shuffle()
的手册(强调我的):
注意:此函数为数组中的元素指定新键。它将删除可能已分配的任何现有密钥,而不仅仅是重新排序密钥。
以下是该页面comments的关联数组解决方案:
.eps
致信:“Ahmad在ahmadnassri dot com”
答案 1 :(得分:0)
std::pair
使用:
function shuffle_assoc($array) {
$keys = array_keys($array);
shuffle($keys);
foreach($keys as $key) {
$new[$key] = $array[$key];
}
return $new;
}
输入:
Print_r(shuffle_assoc($my_array));
输出:
$my_array = Array
(
[Nicaragua] => 62
[Mexico] => 50
[France] => 23
)