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] Comparaison de 2 tableaux : comment lister les données uniques ?


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut [Tableaux] Comparaison de 2 tableaux : comment lister les données uniques ?
    Bonjour,

    Malgré mes recherches je ne trouve pas de solution à ce problèmes. J'ai 2 tableaux : le premier est une sorte d'annuaire (extrait de la bdd), le deuxième un extrait du premier (il contient certaines données mais pas toutes).

    Exemple :

    Tab1("code1", "code2", "code3", "code4", "code5")
    Tab2("code2", "code4", "code5")

    Je voudrais deux listes : la première avec les valeurs qui sont dans les deux tableaux (appelées les "doubles" dans le code), la deuxième avec celles qui ne sont que dans le premier (les "uniques").

    J'ai fait ceci :

    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
     
    // on affiche le premier tableau
    for($x = 0; $x < count($Tab1); $x++) {
    	echo "N°$x : " . $Tab1[$x] . ', ' . $Tab1[$x] . '<br />';
    }
     
    // on affiche le deuxième tableau
    for($y = 0; $y < count($Tab2); $y++) {
    echo "N°$y : " . $Tab2[$y] . ', ' . $Tab2[$y] . '<br />';
    }
     
    // on compare les tableaux
    for ($z = 0; $z < count($Tab1); $z++) {
    	if ( $Tab1[$z] = $Tab2[$z] ) {
    		echo $Tab1[$z] . ' est double<br />';
    	} else {
    		echo $Tab1[$z] . ' est unique<br />';
    	}
    }
    Problème de ce code : si les deux valeurs sont présentes, elles n'ont pas forcément la même clé (décalage à cause des valeurs absentes de Tab2). Résultat je n'obtiens que les valeurs doubles ET qui ont la même position, ce n'est pas ce que je veux.

    J'ai regardé la doc et les fonctions array-intersect(), array_diff(), array_udiff_uassoc() et in_array(), mais je n'arrive pas à les mettre en place (je ne pige pas toujours les explications...).

    Merci pour votre aide !

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu es parti sur la bonne piste : array_diff et arra_intersect sont exactement ce qu'il te faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $tab_uniques = array_diff($tab1, $tab2); //les valeurs qui sont dans tab1 et pas dans tab2
    $tab_doubles = array_intersect($tab1, $tab2); //les valeurs de tab1 qui sont aussi dans tab2

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    Super ça marche ! Effectivement je n'étais pas loin, mais je bloquais sur la syntaxe

    Merci pour ton aide Celira !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/07/2010, 09h01
  2. [VB.NET] Comment lister les ordinateurs d'un réseau
    Par Jan-t dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/03/2005, 08h44
  3. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17
  4. Comment lister les exécutables actifs ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 15/04/2004, 13h03
  5. [VB6] Comment lister les serveurs SQL d'un domaine ?
    Par WOLO Laurent dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/01/2004, 08h49

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