2015-05-18 34 views
1

我想要做一个测验,在这里不正常工作是我的数组:洗牌()作为一个关联数组

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

为什么我会得到这个输出?我想要得到每一个问题。我应该如何得到它?

回答

3

从手册shuffle()(重点煤矿):

注:该功能的新密钥分配给在阵列的元素。它将删除可能已分配的所有现有密钥,而不仅仅是重新排序密钥。

下面是从该网页的comments关联数组的解决方案:

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

    shuffle($keys); 

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

    $array = $new; 

    return true; 
} 

现金去:“艾哈迈德在ahmadnassri点com”

+0

只是1秒太快对我来说: ) – Rizier123

+1

这就是她所说的! :D –

+0

@JohnConde尼斯,我从你身上学到了一些东西...... – KKL