2013-10-27 1 views
0

기본적으로 내 문제는 다른 배열 안에있는 배열을 섞을 수 없다는 것이다. 난의 값 배열 셔플 할 구체적으로는 'Variante 드하는 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);} 
} 

내가에만 표시 할 뒤섞인 'Variante de raspuns :'라는 배열. 나는 그것이 결국 이런 식 있도록 표시하는 또 다른 기능을 가지고 :

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

문제는 'Variante이 raspuns 드'배열 단행되지 않고 처음에 그대로 표시라는 것이다. 또한 정말로 내 기능이 작동하지 않는 이유를 이해하고 싶습니다. 내 솔루션이 좋지 않으면 다른 솔루션을 찾지 않습니다. 미리 감사드립니다.

답변

3

대신이 작업을 수행 :

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

Demo합니다.

내부 배열을 반복 할 필요가 없습니다. 배열로 직접 접근하여 (키로) 직접 섞을 수 있습니다. 그러나 PHP가 foreach 내에서이 배열을 수정한다는 것을 이해하게해야합니다. &$intrebare의 참조가 그 대상입니다.

+0

정확하게 대답했습니다. 고맙습니다. –