2010-05-09 10 views
1

J'essaie de faire un très basic php ORM comme pour un projet d'école. J'ai presque tout fonctionne, mais j'essaye de faire correspondre les résultats à un tableau. Voici un petit bout de code pour aider mes explications.Alors que boucle dans foreach boucle ne boucle pas correctement

$results = array(); 

foreach($this->columns as $column){ 

    $current = array(); 

    while($row = mysql_fetch_array($this->results)){ 
     $current[] = $row[$column]; 
     print_r($current); 
     echo '<br><br>'; 
    } 

    $results[$column] = $current; 

} 

print_r($results); 

return mysql_fetch_array($this->results); 

Cela fonctionne, mais la boucle while ne fonctionne que sur la première colonne. The print_r($results); montre ce qui suit:

Array ([testID] => Array ([0] => 1 [1] => 2) [testName] => Array () [testData] => Array ()) 

Quelqu'un peut-il faire la lumière? Merci d'avance!

+0

Vous ne pouvez pas voir la nécessité de passer par les colonnes manuellement, le drapeau '' de MYSQL_ASSOC' sur mysql_fetch_array' vous donnera un tableau avec seulement les noms de colonnes comme index de toute façon. – Mike

Répondre

4

C'est parce que vous avez déjà tiré par les cheveux chaque ligne, et le pointeur interne est à la fin. Le prochain moment, mysql_fetch_array() retournera immédiatement false. Vous pouvez réinitialiser le pointeur sur la première ligne:

mysql_data_seek($this->results, 0); 

Mettre ce juste avant

while($row = mysql_... 
+0

Merci tas! l'a complètement réparé! Juste une question: existe-t-il un équivalent lors d'une boucle dans un tableau imbriqué? –

0

Je ne suis pas sûr que vous pouvez utiliser l'opérateur -> dans un nom de variable. Lorsque vous essayez d'extraire la clé et la valeur du tableau $ columns? Si oui, vous voulez quelque chose comme ceci:

foreach($columns as $k => $v) { 
//in here, $k is the name of the field, and $v is the associated value 

}