IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recherche multiple et tableaux variables


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Recherche multiple et tableaux variables
    Bonjour,

    J'ai un problème qui me prend la tête depuis 2 jours:

    J'ai un tableau simple (array1). Chaque valeur est un mot ((pomme),(banane),(poire),(je),(manger)..). Mais le nombre de valeur est variable.
    J'ai un second tableau simple(array2) dont chaque valeur contient une chaine longue (il faut manger des pommes et des poires....)

    et je souhaiterais que pour chaque valeur de array2, on vérifie si tous les mots de array1 sont présent.

    ça ne me poserait pas de problème si le nombre de valeurs de array1 était fixe mais il est généré suivant une recherche.

    Je vous assure que j'ai tout essayé en fonction de mais connaissances.
    Merci à vous

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    La fonction :
    te permet d'obtenir le nombre d'éléments du tableau.
    Du coup, une boucle for allant de 0 à "count - 1" te permet de parcourir l'ensemble du tableau.

    Sinon, pour parcourir un tableau dont tu ne connais pas la taille, tu peux également utiliser foreach :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($tableau as &$valeur) {
        // ...
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    C'est ce que je fait et ça donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    nb_mot=count($array1);
    foreach ($array2 as $phrase)
    {
         for ($i=0;$i<$nb_mot;$i++)
         {
            if (ereg($array1[$i],$phrase))
            {
               echo $cd.'<br/>';
             }
           }
    }
    mais le probleme c'est que ça vérifie si chaque mot(array1) est présent un par un dans chaque phrase. Or moi je veut savoir si tous les mots sont présent en même temps.
    j'espère que c'est un peu plus clair.
    Merci à tous

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Dans ce cas, il faut que tu testes si un mot n'y est pas.
    Ce qui donne, avec les balises CODE et l'indentation qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    nb_mot=count($array1);
    foreach ($array2 as $phrase) {
      $isIn = 1;
      for ($i=0;$i<$nb_mot;$i++) {
        // Si UN mot n'y est pas, on passe $isIn à 0
        if (!ereg($array1[$i],$phrase)) {
          $isIn = 0;
        }
        echo "..."; // Suivant que $isIn = 1 ou 0
      }
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    désolé pour le code et l'indent.....par contre là ta variable Isin elle controle rien dans ton script (ou j'ai raté un truc)?

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Non, c'est à toi de gérer après pour le $isIn.
    A la place de mon echo("..."), tu peux mettre quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($isIn) {
      echo "ok";
    } else {
      echo "ko";
    }
    Tu sais, tu as le droit d'adapter les codes qu'on te fournit

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut merci et autre petite question
    Bon ça y'est merci alban85 ça m'a bien aidé et j'ai un peu modifié la séquence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    foreach ($array2 as $phrase)
    {	
            $u=0;
    	for ($i=0;$i<$nb_mot;$i++)
    	{
                if (ereg($array1[$i],$phrase))
               {
    	        $u=$u+1;
               }
    	}
     
    	if ($u==$nb_mot)
    	{
             echo $phrase.'<br/>';
             }	
    }
    Sinon j'ai une petite question:
    $term='et'
    $string='il y a une fleur et un navet dans les forets''
    $pattern= $term.'(\s)';
    (ereg($term,$string) me retourne forets et non navet ...une idée?

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Sans être certain, peut-être entre crochets pour le \s ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    nan j'avais essayé aussi, ça change rien..
    merci quand même

Discussions similaires

  1. [Débutant] Problème de recherche de valeur sur variable multiple
    Par Vinces007 dans le forum C#
    Réponses: 7
    Dernier message: 02/08/2013, 09h08
  2. [MySQL] récupération variable formulaire recherches multiples
    Par Evelyne31 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/10/2012, 20h01
  3. [Tableaux] Variable qui prend plusieurs valeurs
    Par gandoulfe dans le forum Langage
    Réponses: 14
    Dernier message: 26/02/2006, 18h02
  4. [Tableaux] variable qui ne passe pas
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2005, 02h56
  5. [Tableaux] Recherche valeur dans tableaux
    Par Kaimann dans le forum Langage
    Réponses: 10
    Dernier message: 21/10/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo