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 :

[Tableaux] Supprimer les doublons entre 2 (petites) chaines ?


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 109
    Par défaut [Tableaux] Supprimer les doublons entre 2 (petites) chaines ?
    Bonjour,

    J'ai deux chaines contenues dans des variables :

    $chaine1 = "pomme-fraise-poire"; // tous les termes sont toujours séparés par un tiret
    $chaine2 = "banane-cerise-fraise-orange-citron"; // idem

    Je cherche à éliminer les doublons. Je souhaite supprimer les termes de la $chaine2 qui sont contenus dans la $chaine1.
    Ainsi $chaine2 serait "banane-cerise-orange-citron" (suppression de "fraise").

    Les 2 chaines sont relativement petites, composées de moins de 5 termes pour chaine1 et moins de 10 pour chaine2.

    Je ne sais absolument pas comment faire pour supprimer les doublons. J'ai cherché avec mon ami Google mais je n'ai rien trouvé de concluant :-(.
    Pourriez-vous m'aidez s'il vous plait :- ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Tu peux faire comme ça :
    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
    17
    18
    19
    20
    21
    <?php
      $chaine1 = "pomme-fraise-poire"; // tous les termes sont toujours séparés par un tiret
      $chaine2 = "banane-cerise-fraise-orange-citron"; // idem
     
      //-- transformation des chaines en tableau ----------------------------
      $tableauChaine1 = explode('-', $chaine1);
      $tableauChaine2 = explode('-', $chaine2);
     
      //-- parcourt d'un tableau, et pour chaque élément de celui-ci --------
      //-- recherche d'un élément correspondant dans l'autre ----------------
      foreach($tableauChaine1 as $valeur)
      {
        $cle = array_search($valeur, $tableauChaine2);
        if ($cle === 0 || $cle > 0)
          unset($tableauChaine2[$cle]);
      }
      //-- recomposition de la chaine2 --------------------------------------
      $chaine2 = implode('-', $tableauChaine2);
     
      echo 'la nouvelle chaine2 vaut : ' . $chaine2;
    ?>
    Ce n'est pas la seule solution, ni même obligatoirement la meilleure.
    Le temps d'exécution est inférieur au millième de seconde : 0.00025200843811035 sur PIII 500 Mz (eh oui, ça existe encore).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 109
    Par défaut
    Ca a l'air de très bien marcher pour ce que je veux en faire :-). Merci beaucoup jeca !

    Pour le temps d'exécution je ne m'en fait absolument pas : je n'ai à exécuter la fonction que de temps en temps, j'enregistre le résultat dans la BDD .

    Merci encore pour ton aide jeca !

  4. #4
    Membre averti Avatar de KOogar
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Par défaut
    en 1 ligne

    array_diff()

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Citation Envoyé par KOogar Voir le message
    en 1 ligne

    array_diff()
    Pas étonnant que les forums soient encombrés de messages non avenus, puisque personne ne lit le mode d'emploi des langages. Extrait dudit mode d'emploi (php) :
    array_diff
    array_diff -- Calcule la différence entre deux tableaux
    Description
    array array_diff ( array array1, array array2 [, array ...] )


    Compare le tableau array1 avec le tableau array2 et retourne la différence

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 03/06/2014, 08h39
  2. [Toutes versions] Supprimer les doublons dans une chaine de caractères
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/08/2009, 19h10
  3. Réponses: 6
    Dernier message: 14/02/2008, 17h32
  4. expression regulières supprimer les doublons de caratéres dans une chaine
    Par karimphp dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/12/2007, 15h26
  5. [Tableaux] supprimer les doublons
    Par melisse dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2007, 16h09

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