shuffle()对于关联数组无法正常工作

问题描述 投票:1回答:2

我想做一个测验,这是我的数组:

$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!

为什么我得到这个输出?我想得到所有问题。我应该如何获得?

php arrays associative-array shuffle
2个回答
3
投票

摘自shuffle()手册(重点是我的:]

注意:此函数将新键分配给数组中的元素。它将删除可能已经分配的所有现有密钥,而不仅仅是重新排列密钥。

这是该页面shuffle()中关联数组的一种解决方案:

comments

信用证转到:“ ahmadnassri dot com的ahmad”


0
投票

¿shuffle关联数组?这对我有用:

function shuffle_assoc(&$array) {
    $keys = array_keys($array);

    shuffle($keys);

    foreach($keys as $key) {
        $new[$key] = $array[$key];
    }

    $array = $new;

    return true;
}

用途:

 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
                 )
© www.soinside.com 2019 - 2024. All rights reserved.