2011-01-24 3 views
1

J'utilise le code pour renvoyer des données d'une fonction et l'afficher.Sortie inattendue

considèrent: i = j = 0; count = 4;

Je ne reçois pas 4 valeurs de retour à partir du code .. .Qui est sortie prévu.

Mais j'obtenir le résultat quand je remplace la boucle avec print_r($EODRow);

Pls aide.

$i = 0; 

    $j = 0; 

    $count = getEODCount("A"); 

    for(; $i < $count; $i++) 

    { 

      $EODRow = getEOD("A",$i); 

      print "<tr>"; 

      for(; $j < 12; $j++) 

      { 

         print "<td>$EODRow[$j]</td>"; 

      } 

      print "</tr>"; 

} 

Je renvoie un tableau de valeurs à partir de la fonction.

+0

s'il vous plaît indentent votre code pour le rendre plus facile à lire. – Spudley

+1

Ne déclarez pas les variables de boucle, '$ i' et' $ j' en dehors des boucles for. Déclarez-les dans les boucles for, comme 'pour ($ i = 0; $ i <$ count; $ i ++)'. –

Répondre

1

Vous devez réinitialiser vos variables de boucle à chaque boucle. $j n'est pas réinitialisé à 0, après chaque boucle $i.

Vous devriez vraiment changer vos boucles:

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

et

for($j = 0; $j < 12; $j++) 
2

Essayez d'envelopper votre variable avec {}, si print "<td>{$EODRow[$j]}</td>";

Explication:

Le problème est que le compilateur applique l'habitude de l'indexation à la EODRow $ sans identifier vous que cela fait partie de la même variable, c'est ce que font les {}. (Eh bien, c'est ma compréhension du comment/pourquoi de toute façon)

+0

désolé ne fonctionne pas – ineedhelp

+2

Ensuite, je peux voir cela étant un problème futur, vous risquez de rencontrer – Psytronic

4

Vous avez probablement réinitialiser $ j à 0 avant que la boucle intérieure, car il ne sera pas quelque chose de sortie après la première manche de la boucle extérieure

+0

Ceci est probablement le problème. Sinon, seule la première ligne sera imprimée ... – ircmaxell

+1

salut mate .. thanx ça a marché. – ineedhelp

1

try réinitialiser $ j à zéro lorsqu'une autre étape $ i est exécutée

for(; $i < $count; $i++) 

{ $j == 0; 
+1

Ou juste 'pour ($ j = 0; $ j <12; $ j ++)' –

+0

oui, c'est vrai. lol moi –