Une boucle interne qui ne s'execute qu'une seule fois... :( [PHP] - PHP - Programmation
Marsh Posté le 08-10-2002 à 18:07:20
J'ai effectivement la flemme
C'est normal les = a la place des == dans les conditions des while?
Marsh Posté le 08-10-2002 à 19:11:34
les = c'est normal avec un list() ou un each()
t'as esasyer de remplacer ton if ($comptage==1) par un else { ?
si ton comptage est différente de 0 ou 1 ta seconde boucle ne se fait pas..
Marsh Posté le 09-10-2002 à 09:55:34
Quelqu'un du forum seti à trouvé ce qui marchait pas.
En fait, avant de faire le deuxième while, faut faire un reset($thesaurus_1), pour remettre le pointeur au debut....
Un grand merci à tous ceux qui on bien vouluy jetter un coup d'oeil, et en esperant que ca puisse servir à qqn d'autre.
Marsh Posté le 09-10-2002 à 10:12:11
TetardKing a écrit a écrit : Quelqu'un du forum seti à trouvé ce qui marchait pas. En fait, avant de faire le deuxième while, faut faire un reset($thesaurus_1), pour remettre le pointeur au debut.... Un grand merci à tous ceux qui on bien vouluy jetter un coup d'oeil, et en esperant que ca puisse servir à qqn d'autre. |
Comment tu fais ce reset là?
Tu suprimes et recré la variable ou il y a une fonction prévus pour?
Marsh Posté le 09-10-2002 à 10:40:35
tu fait un reset($thesaurus_1) juste avant le while :
Code :
|
et là, ca marche ...
Marsh Posté le 09-10-2002 à 11:02:37
petit conseil d'optimisation
les parcours de tableau de type foreach() sont bien plus rapide que whille .. list .. each
Marsh Posté le 09-10-2002 à 11:08:15
Sh@rdar a écrit a écrit : petit conseil d'optimisation les parcours de tableau de type foreach() sont bien plus rapide que whille .. list .. each |
Mieux vaut être en php4 pour utiliser foreach().
Par contre, je sais pas si son code était prévus pour du php3 ou du php4.
Marsh Posté le 09-10-2002 à 11:32:18
J'ai php 4.2.0 et il était prevu pour.
Bon, tres bien, je me met à foreach alors. Vu la tonne de truc à traiter, ca sera pas du luxe
foreach ($thesaurus_1 as $val_t) { ...
Haaaaa, ces débutants, je vous jure ...
Marsh Posté le 08-10-2002 à 15:58:53
Je vous explique mon pb :
J'ai deux tableaux, un corpus (ensemble de texte) et un thésaurus (un dico).
J'ai des phrases dans les deux, et j'aimerai savoir quelles sont les phrases qu'on retrouve dans les deux, quelque soit l'ordre des mots.
Pour que ca aille plus vite (le corpus fait 56.000 lignes et le thésaurus 27.000), j'ai mis le thésaurus dans des tableaux differents en fonction du nb d'espaces (et donc, du nb de mots).
J'ai donc en gros une grosse boucle, qui parcours le corpus, à l'interieure de laquelle, une boucle parcours le thésaurus.
Et ké passa :
Je commence la grosse boucle :
je prend donc la première ligne du corpus, fait un implode selon les espaces.
Si il n'y a pas d'espaces, un simple in_array suffit, ca, ca marche.
Je continue sur ma boucle interne :
Si il y a un seul espace, je prend ma ligne du thesaurus, la coupe, et regarde si les deux morceaux sont identiques. Si c'est le cas, y'a bon. Sinon, je parcours mon thésaurus.
fin de la boucle interne. On reprend au debut
Si il n'a rien trouvé, il passe à la ligne suivante.
Redebut de la boucle interne
Or, il prend bien la ligne suivante du corpus, mais ne fait pas la boucle interne ...
J'ai mis un compteur pour vérifier, il ne veux passer qu'une fois par la boucle interne... :cry:
Pourquoi ??
Y'a une limitation en php ??
en perl, ca marcherait mieux ??
Qqn aurait il une soluce toute faite en expression regulière qui tient en une ligne ?? :cry:
Merci beaucoup.
Ps : le code joint en annexes :
Donc, en gros, pour ceux qui ont le flemme, le deuxième
ne s'execute qu'au premier passage...
Message édité par TetardKing le 08-10-2002 à 16:16:32