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 :

Comparaison de 2 tableaux associatifs


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Par défaut Comparaison de 2 tableaux associatifs
    Bonjour,

    Voilà j'ai 2 tableaux associatifs, par exemple le premier s'appelle $club[] et le second $membres[] :

    On va voir les structures:

    $club[] = array(
        "id" => "1",
        "name" => "club de football"
    );
    Dans ce tableau j'ai fais un exemple avec 1 seule club mais ils y en a plusieurs (club de basket, baseball...) déclarés de la même manière toujours dans $club[]

    Ensuite le second tableau associatif :

    $membres[] = array(
        "id" => "A1",
        "name" => "Jean Dupont",
        "data" => "1"
    );
    Ce que j'aimerai faire, c'est :

    • Comparer ces 2 tableaux : plus précisément la clé "id" de $club et la clé "data" de $membres.
    • Si les valeurs de ces clé sont identiques alors je vais créer une clé "children" dans $club, là où se trouve le club commun(ici le club de football) et y insérer le nom et l'id de la personne dedans en gardant bien sûr les notions de clé/valeur.
    • Dans le cas où la personne ne fais partie du club de foot on passe au club suivant et on comparer a nouveau les valeurs de la clé "id" de $club à celle de "data" de $membres.

    Est-ce possible de ce genre de tri ?

    Voilà donc un commencement(les 2 tableaux étant déjà correctement remplis) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    foreach($club['id'] as $cle => $element)
        {
          foreach($membres['data'] as $cle2 => $element2)
          {
            if($element == $element2)
             {
               $club['children'] = $membres; #je ne veux pas toute la structure mais juste la partie de la structure correspondantes(exemple : pour le club de football on a que "Jean Dupont" et son id de membre "A1"), car là il va m'ajouter toutes les membres dans le même club.
             }
        }
    }

    Merci et bonne journée !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu te simplifierais le travail en mettant l'id en clef de tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $club[1] = array(
        "id" => 1
        "name" => "club de football"
    );
    cela te permet d'accèder aux données à partir de la clef sans chercher tout le tableau.

    Ensuite pour ton script, tu n'es pas dans la bonne logique : ce que tu veux c'est parcourir tous les joueurs et les placer dans leurs clubs.
    Il faut donc parcourir le tableau des joueurs en premier et pour les placer dans le club, tu n'as plus besoin de parcourir le tableau des clubs avec la modification proposées au dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($membres as $membre) {
         $id_club = $membre['data'];
         $id_joueur = $membre['id'];
         $club[$id_club]['children'][$id_joueur] = $membre;
    }
    Tu vois d'ailleurs que je range par id_joueur pour plus de simplicité pour d'autres traitements.

    En version courte ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($membres as $membre) {
         $club[$membre['data']]['children'][$membre['id']] = $membre;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Par défaut
    Bonjour sabotage,

    Tout d'abord merci pour ta réponse, les membres sont bien classés. Ensuite concernant les id des club là j'avais pris à titre d'exemple 1 mais les id des club comporte 4 chiffres du genre : "1304" pour le club de football.
    Jusque là pas de problème j'ai quand même la bonne structure. En faite je cherche à faire une structure JSON. Dont voici comment elle devrait se présenter :

    {"id":"1", "name":"club","children":[{
    "id":"1304","name": "club de football","children":[{
    "id:":"15B19","name":"Jean Dupont", "data":"1304"}],
    "id":"1355","name":"club de basket","children":[{
    "id:":"15C25","name":"Jean Bon", "data":"1355"},{"id:":"15C28","name":"Jean Pasbon", "data":"1355"}]
    }]
    }
    Et voilà ce que j'ai à la place :

    {"id":"1", "name":"club","children":{
    "id":"1304","name": "club de football","children":{"1304"{
    "id:":"15B19","name":"Jean Dupont", "data":"1304"}},
    (...)
    }
    }
    Bref est-ce que je dois faire des filtres une fois le JSON crée ou puis-modifier la structure avant afin d'obtenir celle voulu?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les deux écritures doivent au final revenir au même.
    Est-ce que tu rencontres un problème dans l'exploitation de ton résultat actuel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Par défaut
    Oui, en faite j'exploite cette structure afin d'afficher un organigramme avec plusieurs niveaux. J'avais réussi à afficher la liste des club mais lorsque j'ajoute la partie que tu as écrite, non seulement je n'obtiens pas les membres de chacun des club(au niveau graphique) mais les club eux-même non plus.
    Ma structure JSON est bien validé mais je pense que ça doit être l’outil que j'utilise pour l'organigramme qui impose la structure JSON tel que je l'ai décrit.
    (J'ajoute que les club et membres sont un exemple que j'adapte , en réalité dans mon organigramme j'ai 6 niveaux, j'ai réussi à en faire 3 pour le moment)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($membres as $membre) {
         $club[$membre['data']]['children'][] = $membre;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Définition "inline" de tableaux associatifs.
    Par Blustuff dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2010, 13h49
  2. Comparaison de 2 tableaux associatifs
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2010, 22h10
  3. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  4. [Tableaux] Comparaison de 2 tableaux
    Par vodasan dans le forum Langage
    Réponses: 9
    Dernier message: 10/01/2008, 08h51
  5. [Collections]Tableaux associatifs
    Par sheura dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 18/12/2005, 14h10

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