PHP Pb de sortie de boucle

PHP Pb de sortie de boucle - PHP - Programmation

Marsh Posté le 23-06-2010 à 13:07:52    

voici mon code :
Je cherche dans toute une tripotée de fichiers de 3 lettres
Si les 3 lettres sont dans mon string input, ça doit me retourner LE PREMIER fichier et SEULEMENT celui ci
Or, ça m'en sort bien de trop
Donc, ayant entendu parler de la commande break, je me demande comment sortir de cette super boucle à la première occurrence trouvée...
 

Code :
  1. <?php
  2. $input = 'Je me promenais avec ma grand mere';
  3. $input = strtolower($input);
  4. $tableau1 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  5. $tableau2 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  6. $tableau3 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  7. foreach($tableau1 as $lettre1)
  8. {
  9. foreach($tableau2 as $lettre2)
  10.  {
  11.  foreach($tableau3 as $lettre3)
  12.   {
  13.   $ind = $lettre1.$lettre2.$lettre3;
  14.   if (stristr($input,$ind) !== FALSE)
  15.    {
  16.    echo 'INDIC_'.strtoupper($ind).'.IND';
  17.    break;
  18.    }
  19.   }
  20.  }
  21. }
  22. ?>


---------------
http://www.ypikay.com
Reply

Marsh Posté le 23-06-2010 à 13:07:52   

Reply

Marsh Posté le 23-06-2010 à 13:44:50    

Pourquoi ne pas mettre le tout dans une fonction, et faire un return du texte que tu fais en echo pour quitter les boucles  ?


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 23-06-2010 à 13:49:47    

ben je suis pas tres pote avec les fonctions en php :??:  
je pourrais mettre un compteur et ne garder que le premier resultat à la limite mais ça me fait ch... de devoir scanner la boucle jusqu'à la fin.


---------------
http://www.ypikay.com
Reply

Marsh Posté le 23-06-2010 à 13:55:20    

Bon j'ai trouvé :
 

Code :
  1. <?php
  2. $input = 'Je me promenais avec ma grand mere';
  3. $input = strtolower($input);
  4. $tableau1 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  5. $tableau2 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  6. $tableau3 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  7. $trouve = 'ko';
  8. unset($trouve);
  9. foreach($tableau1 as $lettre1)
  10. {
  11. foreach($tableau2 as $lettre2)
  12.  {
  13.  foreach($tableau3 as $lettre3)
  14.   {
  15.   $ind = $lettre1.$lettre2.$lettre3;
  16.   if (stristr($input,$ind) !== FALSE)
  17.    {
  18.    echo 'INDIC_'.strtoupper($ind).'.IND';
  19.    $trouve = 'ok';
  20.    break;
  21.    }
  22.   if (isset($trouve)){break;}
  23.   }
  24.  if (isset($trouve)){break;}
  25.  }
  26. if (isset($trouve)){break;}
  27. }
  28. ?>


---------------
http://www.ypikay.com
Reply

Marsh Posté le 23-06-2010 à 13:57:57    

On est d'accord que lorsque stristr ($input, $ind) est vrai, tu veux arreter les itérations pas vrai ?

Code :
  1. <?php
  2. function trouve ($phrase)
  3. {
  4. $tableau1 = $tableau2 = $tableau3 = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  5.  
  6. foreach ($tableau1 as $lettre1)
  7. {
  8. foreach ($tableau2 as $lettre2)
  9. {
  10. foreach ($tableau3 as $lettre3)
  11.  {
  12.  $ind = $lettre1 . $lettre2 . $lettre3;
  13.  if (stristr ($phrase, $ind) !== false)
  14.   {
  15.     return 'INDIC_' . strtoupper ($ind) . '.IND';
  16.   }
  17.  }
  18. }
  19. }
  20. return false;
  21. }
  22.  
  23. $input = 'Je me promenais avec ma grand mere';
  24. $input = strtolower ($input);
  25.  
  26. $r = trouve ($input);
  27. if ($r !== false) {
  28.  echo $r;
  29. }
  30. ?>


 
[:_edit]
ah ben trop tard [:grilled]


Message édité par SICKofitALL le 23-06-2010 à 13:58:25

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 23-06-2010 à 13:59:37    

il fait peur ton truc, j'ai pas trop compris le coup des 3 lettres et des fichiers,
si ta ta chaine : Je me promenais avec ma grand mere
et que j'ai un fichier nommer   nai.txt   je le prend et c'est finis ?

 

la ton code il va juste chercher 3 lettres qui se suivent

Message cité 1 fois
Message édité par stealth35 le 23-06-2010 à 14:08:03
Reply

Marsh Posté le 23-06-2010 à 14:22:19    

oui parce que en fait j'ai 26 * 26 * 26 index differents, chaque index contient des phrases qui contiennent:
AAA
AAB
AAC
...


---------------
http://www.ypikay.com
Reply

Marsh Posté le 23-06-2010 à 14:24:11    

mais merci tout de même à SICKofitALL
c'est vrai que j'apréhende tout le temps les fonctions sous PHP


---------------
http://www.ypikay.com
Reply

Marsh Posté le 23-06-2010 à 14:25:10    

et pourquoi pas un glob('indic_'.$input.'*.*') ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 23-06-2010 à 15:31:14    

sinon, pour revenir au problème initial, un simple  
 

Code :
  1. break 3;


 
en ligne 21 permettait de sortir des trois boucles d'un coup

Reply

Marsh Posté le 23-06-2010 à 15:31:14   

Reply

Marsh Posté le 24-06-2010 à 09:57:20    

c'est ça, faut mettre break 3;


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 24-06-2010 à 10:11:42    

glob existe aussi en php ?
putain de putain...

 

J'ai crasché le serveur (soft) et la base de données....
Je savais pourtant bien que faire des SHIFT SUPPR à 4h du matin c'est dangereux !
Entrain de ressortir une vieille copie de sauvegarde...
Scrogneugneu


Message édité par erwan83 le 24-06-2010 à 10:21:34

---------------
http://www.ypikay.com
Reply

Marsh Posté le 24-06-2010 à 10:15:09    

oui depuis longtemp glob


Message édité par stealth35 le 24-06-2010 à 10:15:24
Reply

Marsh Posté le 26-06-2010 à 01:58:32    

break 3 ! trop cool ça
merci les gens !


---------------
http://www.ypikay.com
Reply

Marsh Posté le 26-06-2010 à 09:52:26    

ya pas à dire le PHP est vraiment un langage qui permet les pires lignes de code


---------------
Blablaté par Harko
Reply

Marsh Posté le 27-06-2010 à 00:25:16    

stealth35 a écrit :

il fait peur ton truc, j'ai pas trop compris le coup des 3 lettres et des fichiers,  
si ta ta chaine : Je me promenais avec ma grand mere
et que j'ai un fichier nommer   nai.txt   je le prend et c'est finis ?
 
la ton code il va juste chercher 3 lettres qui se suivent


 
j'explique :
voici un extrait du fichier INDIC_ZZO.IND :
 

Code :
  1. Annuaire wozzor
  2. Pole Intermezzo
  3. Le carburant vert de Bernard Stroiazzo
  4. Bernard Stroiazzo
  5. Bernard Stroiazzo : Biofuel Systems produira l'energie de demain
  6. Exposition CÉDÉ et Pascal TONEGUZZO
  7. Eros Ramazzotti
  8. Ange Pozzo di Borgo
  9. NiceToFeedYou - Copyright Ange Pozzo di Borgo - 2009. Icones 2.0
  10. Buzzometre : Faut-il gerer sa e-reputation (.)
  11. MEZZO DI PASTA : Toucher de nouveaux consommateurs
  12. MEZZO ACADEMY : Reflexion et creation d'une plate-forme d'E-learning



---------------
http://www.ypikay.com
Reply

Sujets relatifs:

Leave a Replay

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