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

 


Dernière réponse
Sujet : [PHP] Problème dans une imbrication de boucles for
Dost67 $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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Dost67 $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
Dost67 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.
ethernal

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)

Dost67

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.

Dost67

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"...

reddwarf euh ca marche les comparaisons de chaine avec != et == ?
 
perso j utilise strcmp(chaine1,chaine2) et strcasecmp(chaine1,chaine2)
ethernal ç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...
Dost67 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))
Dost67 ..
Dost67 .
Dost67 $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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)