0

基本上我的问题是我无法对另一个数组内的数组进行洗牌。更具体地说,我想对作为“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' 数组没有被打乱,而是按照最初的样子显示。此外,我真的很想了解为什么我的功能不起作用,除非我的功能一点也不好,否则我不会寻找另一种解决方案。先感谢您。

4

1 回答 1

3

改为这样做:

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

演示

您不必遍历内部数组 - 您只需访问要直接洗牌的数组(按键)。但是您确实需要让 PHP 了解您将在其中修改此数组foreach- 这就是 reference in&$intrebare的用途。

于 2013-10-27T20:03:58.060 回答