2009-11-22 10 views
2

Voici le code:Pourquoi mon code PHP ne fonctionne pas?

function swap(&$a, &$b) 
{ 
    list($a, $b) = array($b, $a); 
} 

for ($i=0; count($resultset);$i++) 
{ 
    for($j=1;$j<5;$j++) 
    { 
     $k = rand(1, 4); 
     swap($resultset[$i]["option".$j],$resultset[$i]["option".$k]); 
    } 
} 

Il est un tableau à deux dimensions à partir d'une requête MySQL, je veux mélanger les valeurs dont les clés sont option1, option2, option3 et option4. Mais mon code ne fonctionne pas. Je peux trouver l'erreur moi-même. Veuillez suggérer. Merci d'avance!

+0

quel est le problème? sortie erronée? ou une erreur PHP? – mauris

Répondre

11

Je viens de voir ce:

for ($i=0; count($resultset);$i++) 

ne devrait pas il

for ($i=0; $i < count($resultset);$i++) 

Vous avez manqué la comparaison dans la boucle.

4

C'est une manière très inefficace, sujette aux bogues et illisible de le faire. Vous pourriez vouloir essayer ceci:

$optionKeys = array('option1', 'option2', 'option3', 'option4'); 
foreach ($resultSet as &$row) { 
    # Get options 
    $options = array_intersect_key($row, array_flip($optionKeys)); 
    # randomize 
    shuffle($options); 
    # re-assemble key=>value array 
    $options = array_combine($optionKeys, $options); 
    # assign back to $row 
    $row = $options + $row; 
}