Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
715 connectés 

  FORUM HardWare.fr
  Programmation

  [PHP] Problème dans une imbrication de boucles for

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Problème dans une imbrication de boucles for

n°100905
Dost67
Posté le 15-02-2002 à 15:07:13  profilanswer
 

$verif_mots = explode(" ", $chaine);
for ($i=0; $i<count($verif_mots); $i++) {
  echo $verif_mots[$i]." "; // [1]
  for ($j=0; $j<count($mots); $j++) {
    echo $verif_mots[$i]." "; // [2]
    if ($mots[$j]!=$verif_mots[$i] && strlen($verif_mots[$i])>=5) {
      $motscles[] = $verif_mots[$i];
    }
   }
}
 
Ca sert à générer des mots clés pour un texte. Les mots du texte sont dans $verif_mots. $mots[] est un tableau avec les mots interdits récupéré avec un file() à partir d'un fichier.
 
Maintenant le problème : à priori [1] et [2] devrait afficher la même chose ! Pourtant l'insctruction [1] affiche bien une fois chaque mot du tableau mais [2] les affiche 2 fois. Par exemple si $verif_mots ( 0 => "sécurité", 1 => "informatique" ) eh bien avec :
[1] Ca affiche sécurité informatique
[2] Ca affiche sécurité sécurité informatique informatique
 
Je comprends pas pourquoi et j'ai vraiment besoin de votre aide SVP.

 

[jfdsdjhfuetppo]--Message édité par Dost67--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 15-02-2002 à 15:07:13  profilanswer
 

n°100970
Dost67
Posté le 15-02-2002 à 16:00:22  profilanswer
 

.

n°100999
Dost67
Posté le 15-02-2002 à 16:39:19  profilanswer
 

..

n°101011
Dost67
Posté le 15-02-2002 à 17:09:21  profilanswer
 

Donc j'ai essayé de résoudre le pb en utilisant des foreach mais ça n'a pas fonctionné. Mais j'ai réussi à contourner le pb. Voici pour si ça intéresse :
 
$mots2 = implode(" ", $mots);
 
Comme ça à l'endroit du [1] où il n'y a pas de pb j'utilise un expression régulière :
 
if (preg_match("/".$verif_mots."/i", $mots2))

n°101018
ethernal
Chercheur de vérité...
Posté le 15-02-2002 à 17:21:05  profilanswer
 

ça affichera autant de fois le mot "$verif_mots[$i] que la longueur de ton tableau "$mot".
 
je vois pas ou est le probème...

n°101019
reddwarf
gazzz
Posté le 15-02-2002 à 17:21:19  profilanswer
 

euh ca marche les comparaisons de chaine avec != et == ?
 
perso j utilise strcmp(chaine1,chaine2) et strcasecmp(chaine1,chaine2)


---------------
Fait le ou ne le fait pas ... Essayer ne sert à rien !
n°101068
Dost67
Posté le 15-02-2002 à 19:25:14  profilanswer
 

ethernal a écrit a écrit :

ça affichera autant de fois le mot "$verif_mots[$i] que la longueur de ton tableau "$mot".
 
je vois pas ou est le probème...  




 
Oh si y'a un très gros pb. Avec $verif_mots ( 0 => "sécurité", 1 => "informatique" ) si je mets mon instruction echo $verif_mots[$i]." "; à la ligne [1] (et que je la vire en [2]) ça affiche "sécurité informatique" et si je la mets à la ligne [2] (et que je la vire en [1]) ça affiche "sécurité sécurité informatique informatique"...

n°101069
Dost67
Posté le 15-02-2002 à 19:26:05  profilanswer
 

reddwarf a écrit a écrit :

euh ca marche les comparaisons de chaine avec != et == ?
 
perso j utilise strcmp(chaine1,chaine2) et strcasecmp(chaine1,chaine2)  




 
Le pb ne se situe pas à ce niveau puisqu'il est déjà à l'endroit [2] mais sinon oui ça fonctionne. Moi je n'utilise jamais strcmp.

n°101075
ethernal
Chercheur de vérité...
Posté le 15-02-2002 à 20:43:20  profilanswer
 

Dost67 a écrit a écrit :

 
 
Oh si y'a un très gros pb. Avec $verif_mots ( 0 => "sécurité", 1 => "informatique" ) si je mets mon instruction echo $verif_mots[$i]." "; à la ligne [1] (et que je la vire en [2]) ça affiche "sécurité informatique" et si je la mets à la ligne [2] (et que je la vire en [1]) ça affiche "sécurité sécurité informatique informatique"...  




 
bha oui c normal c'est ça que tu lui demandes à ton morceau de pgm...  
puisque ton $i n'est pas incrémenté dans ta seconde boucle, il va t'afficher $verif_mots[$i] autant de fois que tu as d'éléments dans $mots.
 
Que veux tu comme résultat dans $motcles[] ?
(donne un exemple de contenu de $verif_mots, $mots, et le résultat dans $motcle. ça sera plus facile)

n°101085
Dost67
Posté le 15-02-2002 à 21:45:52  profilanswer
 

C'est exact !! Je n'avais pas fait attention. $mots contenait :
0 => "noter"
1 => "securite"
Comme y'en a 2 c'est pour ça que ça s'affichait 2 fois.

mood
Publicité
Posté le 15-02-2002 à 21:45:52  profilanswer
 

n°101086
Dost67
Posté le 15-02-2002 à 21:48:11  profilanswer
 

$verif_mots contient :
0 => a // qui va virer car >5 caractères
1 => noter // qui est censé virer aussi car mot interdit
2 => une // >5 car
3 => conference // celui qui doit rester
4 => sur // >5 car
5 => la
6 => securite // mot interdit


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] Problème dans une imbrication de boucles for

 

Sujets relatifs
[JAVA] Probleme de surcharge CPUPhp : peut-on gérer plusieurs connexion MySQL en même temps?
[PHP / Flash] deux question et j'espere deux solutions !!!!!Help pour un probleme de pointeurs en C
[PHP]supprimer le caractere fin de ligne d'une chaine de caractere ?[ Compression ] Gzip et PHP
[PHP] adresse ipSh@dar please ! Probleme de SESSION en PHP
[PHP] champ d'une table a augmenter... 
Plus de sujets relatifs à : [PHP] Problème dans une imbrication de boucles for


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR