无法在数组PHP内部对数组进行洗牌

时间:2013-10-27 19:58:28

标签: php arrays multidimensional-array shuffle

基本上我的问题是我不能随机播放另一个数组中的数组。更具体一点,我想改组'Variante de raspuns:'的数值:

$intrebari=array(

    array('Enunt:'=>'2+2=','Variante de raspuns:'=>array(2,5,6,4),'Raspuns corect:'=>4,'Punctaj obtinut:'=>'25p'),

    array('Enunt:'=>'2*2=','Variante de raspuns:'=>array(3,4,8,1),'Raspuns corect:'=>4,'Punctaj obtinut:'=>'25p'),

    array('Enunt:'=>'2/2=','Variante de raspuns:'=>array(1,3,4,8),'Raspuns corect:'=>1,'Punctaj obtinut:'=>'25p'),

    array('Enunt:'=>'2-2=','Variante de raspuns:'=>array(2,3,0,4),'Raspuns corect:'=>0,'Punctaj obtinut:'=>'25p')

);

我想到的功能是:

function amestecVariante(&$array){ 
    foreach($array as $intrebare){
        foreach($intrebare as $k=>$v)
           if($k=='Variante de raspuns:')   
            shuffle($v);}
}

现在我只想用洗牌的'Variante de raspuns:'显示数组。我有另一个功能来显示它,所以它最终会这样:

amestecVariante($intrebari);
afisare($intrebari);

问题是'Variante de raspuns'数组没有洗牌,它最初显示。此外,我真的想了解为什么我的功能不起作用,我不是在寻找另一种解决方案,除非我的功能根本不好。提前谢谢。

1 个答案:

答案 0 :(得分:3)

请改为:

function amestecVariante(&$array){ 
    foreach($array as &$intrebare){
        shuffle($intrebare['Variante de raspuns:']);
    }
}

Demo

您不必遍历内部数组 - 您只需直接访问数组(通过键)。但是你需要让PHP明白你将在foreach中修改这个数组 - 这就是&$intrebare中的引用。