2011-06-30 6 views
0

Im coincé avec ce problème simple en php:Comment faire un tableau multidimensionnel dans une boucle while?

$words = array(); 
while ($allrow = mysqli_fetch_array($all)) 
{  
    $words = "".utf8_encode($allrow["eng"])."" => "".$allrow["id"]."";     
} 

foreach ($words[] as $key => $word) { 

Je veux avoir un tableau avec quelques mots et son id. Dans la boucle foreach, je dois être capable de savoir quel identifiant a chaque mot.

Répondre

2

syntaxe de construction de tableau Vous est éteint, essayez ceci:

// array key is the id, swap if needed, but I assume the ids are unique 
$words[$allrow["id"]] = utf8_encode($allrow["eng"]); 

Chaque fois que vous dites $words = $anything, vous écrasez la dernière itération.

Cela aurait généré une erreur d'analyse:

."" => "". 

Je ne sais pas comment cela filais vos tests. Pas besoin non plus de chaînes vides "".

1

Dans votre boucle foreach, ajoutez chaque entrée à la baie.

$words[utf8_encode($allrow["eng"])] = $allrow["id"]; 

si vous voulez vraiment l'identifiant comme la clé, ce qui est plus probable, vous inversez l'affectation:

$words[$allrow["id"]] = utf8_encode($allrow["eng"]); 

De plus, vous ne devriez pas itérer à l'aide $words[]. Ça n'a pas de sens. Utilisez
foreach($words as $key => $value)

En attribuant des valeurs de tableau avec [] et les tableaux sont itérer concepts de base, vous devriez étudier sur PHP arrays avant d'essayer de les utiliser.

+0

Je ne ai même pas regardé à ce dernier bit, ce code est un gâchis. +1 pour la lecture recommandée sur PHP de base. –

0
$words[$allrow["id"]] = utf8_encode($allrow["eng"]); 

puis dans la boucle foreach utiliser foreach ($words as $key => $word) {

Questions connexes