2013-10-27 23 views
0

基本上我的問題是我無法混洗另一個數組內的數組。更具體地講,我想洗牌的數組,它是「的值變式德raspuns:」:無法在陣列中混洗數組PHP

$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);} 
} 

現在我只想顯示陣列與改組'瓦里安特德拉普斯:'。我還有一個功能,所以它是這樣的中端顯示它:

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

的問題是,「變式去raspuns」陣列是不是洗牌,它的顯示,因爲它是最初。此外,我真的很想理解爲什麼我的功能不起作用,我不尋找另一種解決方案,除非我的所有功能都不好。先謝謝你。

回答

3

而是執行此操作:

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

Demo

您不必遍歷內部數組 - 您只需直接訪問要清洗的數組(按鍵)。但是你需要讓PHP明白你將在foreach內修改這個數組 - 這就是&$intrebare的參考。

+0

正是我尋找的答案。非常感謝你。 –