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 :

Tableau multidimensionnel: lire les valeurs associées à une clé passée en paramètre


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut Tableau multidimensionnel: lire les valeurs associées à une clé passée en paramètre
    Bonjour à tous,

    Grâce à XML Reader, je transforme le contenu d'un fichier XML en un ensemble de tableaux PHP.

    Quand je fais print_r() sur ce tableau multidimensionnel, voici un extrait :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Array
    (
        [0] => Array
            (
                [tag] => rootTag
                [childs] => Array
                    (
                        [0] => Array
                            (
                                [tag] => Structure_diplome
                                [vet-infos] => Array
                                    (
                                        [Etape] => 3E17D3
                                    )
     
                                [childs] => Array
                                    (
                                        [0] => Array
                                            (
                                                [tag] => Cours
                                                [elp-infos] => Array
                                                    (
                                                        [element_pedagogique] => 3EUSPT5D
                                                    )
     
                                                [childs] => Array
                                                    (
                                                        [0] => Array
                                                            (
                                                                [tag] => Etudiant
                                                                [etu-infos] => Array
                                                                    (
                                                                        [UID] => gressiel
                                                                        [email] => laurent.gressier@etu.u-cergy.fr
                                                                    )
     
                                                            )
     
                                                        [1] => Array
                                                            (
                                                                [tag] => Etudiant
                                                                [etu-infos] => Array
                                                                    (
                                                                        [UID] => soks
                                                                        [email] => soryanie.sok@etu.u-cergy.fr
                                                                    )
     
                                                            )
     
                                                        [2] => Array
                                                            (
                                                                [tag] => Etudiant
                                                                [etu-infos] => Array
                                                                    (
                                                                        [UID] => inthavoa
                                                                        [email] => alexis.inthavong@etu.u-cergy.fr
                                                                    )

    J'aimerais récupérer toutes les valeurs ayant comme clé [UID] dans l'optique de les comparer avec le résultat d'une requête SQL.

    Le résultat idéal serait :
    [UID] => gressiel
    [UID] => soks
    [UID] => inthavoa
    J'ai donc commencé ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($elp_array[0] as $key => $value)
    	foreach($value[0] as $subkey => $subvalue)
    		foreach($subvalue[0] as $subsubkey => $subsubvalue)
    			echo $subsubkey." => ".$subsubvalue."<br />";
    Voici le résultat :

    tag => Cours
    elp-infos => Array
    childs => Array
    Avez-vous une suggestion ?

    Merci

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    le plus simple est xpath directement sur le xml

    http://php.net/manual/fr/simplexmlelement.xpath.php

  3. #3
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Je n'utilise pas SimpleXML car le fichier XML est trop lourd : plus de 6 millions de lignes.

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    6 millions de lignes.!!!

    la taille mémoire que prend ce tableau !!!!! suis pas sur que ce soit réalisable sur une serveur web ??

    Il était bien , de faire des filtres dé le départ avec XMLreader

    sinon il faut faire une méthode récursive du type (a noter le passage par reference pour la pauvre mémore !) :

    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
    22
    23
    24
        class ParseArray {
         public $items=array();
         public $key='UID';
     
         public function parse(&$nodes){
           if (is_array($nodes)){
            foreach($nodes as $key=>$node){
                if ($key===$this->key){
                    $this->items[]=(String)$node;
                }
                else {
                    $this->parse($node);
                }
            }
           }
         }
        }
     
        $uid=new ParseArray();
            $uid->key='UID';
            $uid->parse($tab);
     
        print_r( $uid->items );
        unset( $uid );

  5. #5
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Merci pour cette proposition, mais le résultat n'est pas celui attendu
    Voici ce que j'obtiens :

    Array ( [0] => inthavoa )

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    presque ca !
    il ne trouve que le dernier ?
    comme si tu avais $this->items=.

    ligne 9 a bien $this->items[]= ?

  7. #7
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par papajoker Voir le message
    ligne 9 a bien $this->items[]= ?
    Effectivement, il n'a gardé que le dernier "item" ; et oui, j'ai bien écrit avec les crochets...

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    dsl mais la je vois pas
    c'est une fonction toute simple avec 5 lignes de codes

    et je n'ai pas le tableau pour tester, mais c'est une fonction générique qui doit passer pour tout tableau de tableaux.
    tu peux tester un debug avec des écho ... ligne 9 et 12

  9. #9
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par papajoker Voir le message
    dsl mais la je vois pas
    Rectificatif : ça fonctionne très bien

    J'avais modifié mon parsing entre temps...

    Un grand merci, grâce à ta fonction, voici le résultat :
    Array ( [0] => gressiel [1] => soks [2] => inthavoa
    ...
    [250] => vonga [251] => michalom [252] => gressiel [253] => soks [254] => inthavoa )
    Il y a des doublons, c'est normal.
    J'aimerais donc les éliminer avec la fonction array_unique : puisqu'elle prend un array en paramètre, comment l'appliquer dans ce cas de figure (i.e. à "$uid->items") ?

  10. #10
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    bon ca marche

    a la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->items[]=(String)$node;
    mettre valeurs dans la clé :
    tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->items[ (String)$node] = 1;
    donc après peut-être plus facile a utiliser le tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( isset($uid->items[$toto]) ) {  nom $toto trouvé  }
    ps: $uid->items est 1 simple tableau donc possible utiliser toute fonction array_xxxxx

  11. #11
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par papajoker Voir le message
    ps: $uid->items est 1 simple tableau donc possible utiliser toute fonction array_xxxxx
    Tout à fait, j'ai posté ma question un peu vite

    Enfin, dernière question :

    Pour chaque valeur de "Etape", j'aimerais concaténer la valeur de ses enfants "element_pedagogique".

    Par exemple :
    3E17D3-3EUSPT5D
    3E17D3-3EVAFI5M
    3E17D3-3EVCIN5M
    Je ne parviens pas à modifier en conséquence la classe ParseArray...

  12. #12
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    ai juste ajouté $this->prefix, ca doit etre :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
        class ParseArray
        {
            public $items=array();
            public $key='UID';
            private $prefix='';
     
            public function parse(&$nodes){
                if (!is_array($nodes)) return;
                foreach($nodes as $key=>$node){
     
                    if ($key===$this->key){
                        echo ' trouvé '.$key. ' '.$node. ' ';
                        $this->items[]=(string)$node;
                    }
                    else{
                        $this->parse($node);
                    }
                }
            }
     
            public function parseEtape(&$nodes){
                if (!is_array($nodes)) return;
                foreach($nodes as $key=>$node){
     
                    if ($key==='Etape'){
                        $this->prefix=(string)$node.'-';
                    }
     
                    if ($key===$this->key){
                        $this->items[ $this->prefix.(string)$node]=1;
                    }
                    else{
                        $this->parseEtape($node);
                    }
                }
            }        
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $element_pedagogique= new ParseArray();
            $element_pedagogique->key='element_pedagogique';
            $element_pedagogique->parseEtape($tab);
    bien sur c'est a vu de nez

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    tes 6 millions de lignes c'est de la folie.

    Tu ne peux pas découper le fichier et le traitement?

    Sinon, pas besoin de réinventer la roue, une récursion de array_column devrait résoudre ton problème

    Et si tu n'as pas php 5.5, l'implémentation officielle en < 5.5 se trouve ici:
    https://github.com/ramsey/array_column

    Exemple:
    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
    22
    23
    24
    25
    26
    27
    28
    $arr = [
        0 => [
            "tag" => [
                "test" => true,
                "user" => [
                    "uid" => 152,
                ]
            ]
        ],
        1 => [
            "tag" => [
                "test" => false,
                "user" => [
                    "uid" => 122,
                ]
            ]
        ],
        2 => [
            "tag" => [
                "test" => true,
                "user" => [
                    "uid" => 110,
                ]
            ]
        ],
    ];
     
    var_dump(array_column(array_column(array_column($arr, "tag"), "user"), "uid"));

  14. #14
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Et si tu n'as pas php 5.5, l'implémentation officielle en < 5.5 se trouve ici:
    https://github.com/ramsey/array_column
    Merci pour la suggestion (surtout que je suis en v5.3)

    Citation Envoyé par Tsilefy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump(array_column(array_column(array_column($arr, "tag"), "user"), "uid"));
    Cependant, la solution que tu proposes ne fonctionne pas...

  15. #15
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    tes 6 millions de lignes c'est de la folie.
    +1

    oui c'était ma première réponse a cette discussion.

    Si ce projet doit tourner chez un hébergeur web, tu ne disposes pas de ressources mémoires suffisantes.

    1) soit faire plusieurs xmlreader : parser ET filtrer le fichier a chaque demande

    2) sauvegarder temporairement tout l'xml dans table(s) temporaires pour faire facilement les comparaisons en sql.

  16. #16
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Citation Envoyé par gazza Voir le message
    Merci pour la suggestion (surtout que je suis en v5.3)


    Cependant, la solution que tu proposes ne fonctionne pas...
    Est-ce que ça fonctionne sur des tableaux imbriqués simples, à 2 ou 3 niveaux?

  17. #17
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Si ce projet doit tourner chez un hébergeur web, tu ne disposes pas de ressources mémoires suffisantes.
    Ca ira, le fichier est hébergé sur un serveur de notre DSI.

    Citation Envoyé par papajoker Voir le message
    2) sauvegarder temporairement tout l'xml dans table(s) temporaires pour faire facilement les comparaisons en sql.
    Excellente suggestion, je la garde de côté ; j'aimerais aboutir avec la fonction "array_column" proposée par Tsilefy

  18. #18
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Non, j'ai réussi à utiliser array_column sur "un seul" niveau de tableau, comme dans l'exemple sur github.

    Si j'ajoute "un niveau de tableau" au tableau "$records" de départ :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $records = array
    (
        'set1' => array
    	(
    		array
    		(
    			'id' => 2135,
    			'first_name' => 'John',
    			'last_name' => 'Doe'
    		),
    		array
    		(
    			'id' => 3245,
    			'first_name' => 'Sally',
    			'last_name' => 'Smith'
    		),
        ),
     
    	'set2' => array
    	(
    		array
    		(
    			'id' => 5342,
    			'first_name' => 'Jane',
    			'last_name' => 'Jones'
    		),
    		array
    		(
    			'id' => 5623,
    			'first_name' => 'Peter',
    			'last_name' => 'Doe'
    		)
    	)
    );
     
    print_r(array_column($records, "last_name"));
    J'ai pour résultat :
    Array()

    Ensuite, faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r(array_column(array_column($records, "last_name"), "set1"))
    ne donne rien non plus :
    Array()

  19. #19
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    ma solution parseEtape() fonctionne bien non ?

    sinon, si marche pas, il pourrait etre bien de nous fournir un peu du code de la source.

    avec var_export($TonTableau) et pas print_r($TonTableau), la il serait alors possible de tester avec le même format de tableau que toi.

  20. #20
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ugh :-(
    La structure de ton tableau ne convient pas à array_column. Je n'arrive pas à trouver rapidement ce qui cloche, désolé.

    Mais j'ai peut-être plus rapide et moins compliqué: array_walk_recursive.
    exemple 1:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    $records = array
        (
        'set1' => array
            (
            array
                (
                'id' => 2135,
                'first_name' => 'John',
                'last_name' => 'Doe'
            ),
            array
                (
                'id' => 3245,
                'first_name' => 'Sally',
                'last_name' => 'Smith'
            ),
        ),
        'set2' => array
            (
            array
                (
                'id' => 5342,
                'first_name' => 'Jane',
                'last_name' => 'Jones'
            ),
            array
                (
                'id' => 5623,
                'first_name' => 'Peter',
                'last_name' => 'Doe'
            )
        )
    );
     
     
    $last_names = array();
     
    array_walk_recursive($records, function($value, $key) use (&$last_names) {
            if ($key == 'last_name') {
                $last_names[] = $value;
            }
        });
     
    print_r($last_names);
    Array
    (
        [0] => Doe
        [1] => Smith
        [2] => Jones
        [3] => Doe
    )
    Exemple2:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    $records = array(
        array
            (
            'tag' => 'rootTag',
            'childs' => array
                (
                array
                    (
                    'tag' => 'Structure_diplome',
                    'vet-infos' => array('Etape' => '3E17D3'),
                    'childs' => array
                        (
                        array
                            (
                            'tag' => 'Cours',
                            'elp-infos' => array
                                (
                                'element_pedagogique' => '3EUSPT5D'
                            ),
                            'childs' => array
                                (
                                array
                                    (
                                    'tag' => 'Etudiant',
                                    'etu-infos' => array
                                        (
                                        'UID' => 'gressiel',
                                        'email' => 'laurent.gressier@etu.u-cergy.fr'
                                    )
                                ),
                                array
                                    (
                                    'tag' => 'Etudiant',
                                    'etu-infos' => array
                                        (
                                        'UID' => 'soks',
                                        'email' => 'soryanie.sok@etu.u-cergy.fr'
                                    )
                                ),
                                array
                                    (
                                    'tag' => 'Etudiant',
                                    'etu-infos' => array
                                        (
                                        'UID' => 'inthavoa',
                                        'email' => 'alexis.inthavong@etu.u-cergy.fr'
                                    )
                                )
                            )
                        )
                    )
                )
            )
        ),
        array
            (
            'tag' => 'rootTag',
            'childs' => array
                (
                array
                    (
                    'tag' => 'Structure_diplome',
                    'vet-infos' => array('Etape' => '3Efg17D3'),
                    'childs' => array
                        (
                        array
                            (
                            'tag' => 'Cofgurs',
                            'elp-infos' => array
                                (
                                'element_pedagogique' => '3EUSfgfgPT5D'
                            ),
                            'childs' => array
                                (
                                array
                                    (
                                    'tag' => 'Etuergerdiant',
                                    'etu-infos' => array
                                        (
                                        'UID' => 'grerssiel',
                                        'email' => 'laurent.gressier@etu.u-cergy.fr'
                                    )
                                ),
                                array
                                    (
                                    'tag' => 'Etudiant',
                                    'etu-infos' => array
                                        (
                                        'UID' => 'soks',
                                        'email' => 'soryanie.sok@etu.u-cergy.fr'
                                    )
                                ),
                                array
                                    (
                                    'tag' => 'Etudiant',
                                    'etu-infos' => array
                                        (
                                        'UID' => 'intgehavoa',
                                        'email' => 'alexis.inthavong@etu.u-cergy.fr'
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    );
     
    $uids = array();
     
    array_walk_recursive($records, function($value, $key) use (&$uids) {
            if ($key == 'UID') {
                $uids[] = $value;
            }
        });
     
    print_r($uids);
    Array
    (
        [0] => gressiel
        [1] => soks
        [2] => inthavoa
        [3] => grerssiel
        [4] => soks
        [5] => intgehavoa
    )

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 22h54
  2. Réponses: 2
    Dernier message: 22/01/2013, 19h31
  3. [XL-2007] Afficher toutes les valeurs associées à une autre valeur
    Par lecter85 dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2012, 19h23
  4. Lire les valeur d'une requete (methode utiliser POSTE)
    Par Alghero dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 25/07/2007, 16h09
  5. Lire toutes les valeurs d'une clé
    Par winow dans le forum C++Builder
    Réponses: 3
    Dernier message: 03/02/2006, 19h51

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