Parcourir un tableau php

Parcourir un tableau php - PHP - Programmation

Marsh Posté le 17-02-2009 à 14:39:40    

Bonjour,
J'ai un petit problème dans mes boucle pour parcourir un tableau:
Merci de helpp  

Code :
  1. for($i = 1; $i <$nbquestion; $i++)
  2.      {
  3.      for($j =0; $j<$nbquestion;)
  4.      {
  5.      echo $tabaff[$j].'<br>';
  6.       if ($tabaff[$j] == $tabaff[$i])
  7.       {
  8.       echo 'erreur';
  9.       }
  10.       else
  11.       {
  12.        $j++;
  13.       }
  14.      }
  15.                                                 }


 
sachant que le tablea correspond a sa  

Code :
  1. Array ( [0] => 1 [1] => 2 )


rien ne s'affiche

Message cité 1 fois
Message édité par dev123 le 17-02-2009 à 14:40:30
Reply

Marsh Posté le 17-02-2009 à 14:39:40   

Reply

Marsh Posté le 17-02-2009 à 14:46:27    

Code :
  1. for($i = 1; $i <$nbquestion; $i++)
  2. {
  3.  for($j =0; $j<$nbquestion;)
  4.  {
  5.    echo $tabaff[$j].'<br>';
  6.    if ($tabaff[$j] == $tabaff[$i])
  7.    {
  8.      echo 'erreur';
  9.    }
  10.    else // T'aurais pas une boucle infinie par ici ?
  11.    {
  12.      $j++;
  13.    }
  14.  } // Il en maquait une, erreur de copier/coller ?
  15. }


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 17-02-2009 à 14:46:27    

dev123 a écrit :


Code :
  1. for($i = 1; $i <$nbquestion; $i++)
  2. for($j =0; $j<$nbquestion;)



Normal que tu n'aies pas la même syntaxe ?  :ange:  
 
Sinon, tu devrais étudier le foreach, ça pourrait t'intéresser...

Reply

Marsh Posté le 17-02-2009 à 14:47:36    

Dis moi, tu te rends compte que si tu tombes sur une erreur, tu te retrouves à boucler indéfiniment sur ton erreur?
 
Sinon, que vaut $nbquestion? Il faut qu'il vaille au moins deux pour rentrer dans le "for" extérieur.
 
EDIT : demis  [:rttolivers]


Message édité par omega2 le 17-02-2009 à 14:48:35
Reply

Marsh Posté le 17-02-2009 à 14:50:33    

macgawel a écrit :

Normal que tu n'aies pas la même syntaxe ?  :ange:  
 
Sinon, tu devrais étudier le foreach, ça pourrait t'intéresser...


 
j'ai pas vraiment trouvé ce que je cherchais  
 

dwogsi a écrit :

Code :
  1. else // T'aurais pas une boucle infinie par ici ?
  2.    {
  3.      $j++;
  4.    }
  5.  } // Il en maquait une, erreur de copier/coller ?
  6. }



 
oui j'ai bien une boucle infini et bien erreur de copier/coller lol  
 
 
Et aussi le nbreponse correspond a 2
 

Reply

Marsh Posté le 17-02-2009 à 14:55:51    

Et donc ?
T'es sûr que c'est pas quelque chose dans ce genre que tu voulais :

 
Code :
  1. for($i = 1; $i <$nbquestion; $i++)
  2. {
  3.  for($j =0; $j<$nbquestion;$j++)
  4.  {
  5.    echo $tabaff[$j].'<br>';
  6.    if ($tabaff[$j] == $tabaff[$i]) echo 'erreur';
  7.  }
  8. }
 

En fait je commence à me demander si tu cherche pas à vérifier si les deux tableaux contiennent les mêmes valeurs.
Et si c'est le cas alors ton code est complètement faux.


Message édité par dwogsi le 17-02-2009 à 15:01:02

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 17-02-2009 à 15:04:05    

merde dsl j'ai pas bien expliqué mon problème  
 moi ce ke je cherche c a parcourir un tableau et vérifier si tout les valeur sont identique si c'est le cas afficher erreur

Reply

Marsh Posté le 17-02-2009 à 15:08:34    

Et tu as conscience que ton code va te renvoyer un paquet d'erreurs (au minimum $nbquestion - 1) ?
Exemple :

Code :
  1. $tabaff[0] = 1;
  2. $tabaff[1] = 2;
  3. $tabaff[2] = 2;
  4. $nbquestion = 3;


Voilà comment ça va se passer :

$i = 1  
 $j = 0 =>  
 $j = 1 => $tabaff[1] = $tabaff[1] => "erreur"
 $j = 2 => $tabaff[1] = 2 = $tabaff[2] => "erreur"
$i = 2
 $j = 0 =>  
 $j = 1 => $tabaff[1] = 2 = $tabaff[2] => "erreur"
 $j = 2 => $tabaff[2] = $tabaff[2] => "erreur"

Reply

Marsh Posté le 17-02-2009 à 15:10:45    

ok pas vraiment compris lol
 comment gére le problème dans ce cas ?? :)

Reply

Marsh Posté le 17-02-2009 à 15:17:21    

dev123 a écrit :

ok pas vraiment compris lol
 comment gére le problème dans ce cas ?? :)

En php, soit avec les fonctions de comparaisons de tableaux, soit en bouclant sur un tableau avec un foreach (avec la syntaxe qui retourne aussi la clé) et en utilisant les infos du foreach pour comparer les cases des deux tableaux qui correspondent.

Reply

Marsh Posté le 17-02-2009 à 15:17:21   

Reply

Marsh Posté le 17-02-2009 à 15:18:33    

ça ressemble vachement à un exercice de cours cette histoire, quand même.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 17-02-2009 à 15:22:03    


omega2 a écrit :

En php, soit avec les fonctions de comparaisons de tableaux, soit en bouclant sur un tableau avec un foreach (avec la syntaxe qui retourne aussi la clé) et en utilisant les infos du foreach pour comparer les cases des deux tableaux qui correspondent.


Ok je vais réfléchir je  surement trouve la réponse!! je te fait part du resultat un peut plus tard
 
Merci
 

skeye a écrit :

ça ressemble vachement à un exercice de cours cette histoire, quand même.[:petrus75]


Je suis un débutant en php qui essaye de réussir lol :)

Reply

Marsh Posté le 17-02-2009 à 15:31:41    

dev123 a écrit :

ok pas vraiment compris lol
 comment gére le problème dans ce cas ?? :)


Quand tu as un problème dans une boucle, teste la avec quelques valeurs (et le cas échéant avec des valeurs "limites" ), ça t'aidera à comprendre où est le problème.
Ici, je la teste avec un tableau de 3 éléments. Et on constate que tu renvoies le message d'erreur trop souvent...
 
Si tu veux faire un système de boucles imbriquées, $i parcourt tout le tableau, mais $j ne doit parcourir que les éléments après $i.
Mais ça n'est valable que dans le cas d'un exercice, ou en vue d'un portage ultérieur.
Si l'objectif est de faire un code PHP robuste, il faudrait savoir ce que tu cherches à faire mais il y a des fonctions PHP qui pourraient t'aider...

Reply

Marsh Posté le 17-02-2009 à 15:35:36    

Non mais pour vérifier si toutes les valeurs d'un tableau sont identiques il n'y a certainement pas besoin d'imbriquer les boucles.

 

Dans une simple boucle, suffit de contrôler que la valeur courante est égale à la précédente par exemple, en démarrant le parcourt du tableau à 1. Dès que c'est faux, on sait que les valeurs du tableaux ne sont pas toutes identiques. On quitte la boucle et on transmet l'info via une variable de contrôle.

 

Et si la taille du tableau est variable, ne pas oublier de traiter le cas particulier d'un tableau de taille 1.


Message édité par dwogsi le 17-02-2009 à 15:36:51

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 17-02-2009 à 15:45:42    

macgawel a écrit :


Quand tu as un problème dans une boucle, teste la avec quelques valeurs (et le cas échéant avec des valeurs "limites" ), ça t'aidera à comprendre où est le problème.
Ici, je la teste avec un tableau de 3 éléments. Et on constate que tu renvoies le message d'erreur trop souvent...
 
Si tu veux faire un système de boucles imbriquées, $i parcourt tout le tableau, mais $j ne doit parcourir que les éléments après $i.
Mais ça n'est valable que dans le cas d'un exercice, ou en vue d'un portage ultérieur.
Si l'objectif est de faire un code PHP robuste, il faudrait savoir ce que tu cherches à faire mais il y a des fonctions PHP qui pourraient t'aider...


 
 
oui je regard les fonctions.
il ne s'agit pas d'un exercice c'est un projet j'ai des types de libelles je verifie si les type sont présent plusieurs fois et si c'est le cas j'affiche un message d'erreur  
Merci

Reply

Marsh Posté le 17-02-2009 à 15:48:59    

Problème d'expression...
Tu veux vérifier qu'il n'y ai pas de doublons dans ton tableau !


Message édité par dwogsi le 17-02-2009 à 15:49:10

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 17-02-2009 à 15:52:41    

ehh wiii on peut le dire comme sa

Reply

Marsh Posté le 17-02-2009 à 15:55:17    

Non non : On dit ça comme ça !
Google : http://www.google.fr/search?source [...] lr%3D&aq=f


Message édité par dwogsi le 17-02-2009 à 16:13:43

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 17-02-2009 à 16:57:11    

lol merci pour la correction

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed