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

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] suppression des doublons


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Par défaut [SimpleXML] suppression des doublons
    Bonjour, après quelques recherches sans résultat, je me permets de poster pour savoir s'il existe une solution pour supprimer les doublons avec simplexml.

    Voici la partie de mon code concernée:
    C'est '$fluxXmlPistes->piste' qui contient des doublons.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $xml.='<SECTEUR nom="pistes">';
     
    foreach($fluxXmlPistes->piste as $pistes)
    {
     
    	$pistes->etat = str_replace('ferme', 'F', $pistes->etat);
    	$pistes->etat = str_replace('ouvert', 'O', $pistes->etat);
    	$xml.='<PISTE nom="'.$pistes->nom.'" etat="'.$pistes->etat.'" type="" niveau="" msg="" entretien_txt="" entretien_num=""/>';
    }
     
    $xml.='</SECTEUR>';
    Merci à ceux qui sauront m'éclairer

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Si une piste est identifiée par son nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $pistes = array( ) ;
    foreach($fluxXmlPistes->piste as $piste)
    {
        if ( ! in_array($piste->nom, $pistes) ) {
    	$piste->etat = str_replace('ferme', 'F', $piste->etat);
    	$piste->etat = str_replace('ouvert', 'O', $piste->etat);
    	$xml.='<PISTE nom="'.$piste->nom.'" etat="'.$piste->etat.'" type="" niveau="" msg="" entretien_txt="" entretien_num=""/>';
            $pistes[ ] = $piste->nom ;
        }
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Par défaut
    Merci pour la réponse qui me semble tout à fait opérationnelle.....Sauf dans la pratique, j'ai toujours mes doublons....

    Je ne sais pas pourquoi....

    Merci

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    dans ce cas tu fais un tableau dans lequel tu ajoutes à toutes les itérations et ensuite tu fais un array_unique(). Les puristes diront que c'est moins performant mais c'est tellement plus simple à rédiger.

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par flo73 Voir le message
    Merci pour la réponse qui me semble tout à fait opérationnelle.....Sauf dans la pratique, j'ai toujours mes doublons....

    Je ne sais pas pourquoi....
    Pour illustrer le bug donne-nous un petit script fonctionnel et un XML valide pour test ;-)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 82
    Par défaut
    Merci pour vos réponses.

    Seb, ta solution était effectivement la bonne.....La subtilité résidait dans le fait qu'un espace était ajouté sur certains noms en double:

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    pistes = array( ) ;
    foreach($fluxXmlPistes->piste as $piste)
    {
        if ( ! in_array(trim($piste->nom), $pistes) ) {
    	$piste->etat = str_replace('ferme', 'F', $piste->etat);
    	$piste->etat = str_replace('ouvert', 'O', $piste->etat);
    	$xml.='<PISTE nom="'.$piste->nom.'" etat="'.$piste->etat.'" type="" niveau="" msg="" entretien_txt="" entretien_num=""/>';
            $pistes[ ] = trim($piste->nom) ;
        }
    }
    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2009, 10h06
  2. suppression des doublons
    Par sucreMan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/10/2007, 12h12
  3. [SQL] Suppression des doublons d'un champs SQL
    Par fabien14 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/05/2007, 14h28
  4. problème avec la suppression des doublons dans arraylsit
    Par ulysse031 dans le forum Langage
    Réponses: 13
    Dernier message: 04/03/2007, 12h52
  5. suppression des doublons
    Par LuckySoft dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/08/2006, 12h29

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