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 :

Extraire d'un tableau multidimensionnel/associatif


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 484
    Points : 873
    Points
    873
    Par défaut Extraire d'un tableau multidimensionnel/associatif
    Bonjour à tous,

    j'ai une question sur les tableaux. Soit un tableau ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array(
      [0] => array('name' => 'atos', 'level' => 2, 'index'=1),
      [1] => array('name' => 'portos', 'level' => 4, 'index'=3),
      [2] => array('name' => 'aramis', 'level' => 3, 'index'=2),
    )
    en sortie je souhaiterais le tableau suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    array([0]=>'atos',
    [1]=>'portos',
    [2]=>'aramis')
    j'ai codé la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getarray($array,$key)
    {
        foreach ($array as $arrayelt)
        {
         $arrayret[]=$arrayelt[$key];
         }
         return $arrayret;
     }
     
    //du coup je l'appelle comme ca:
    $genarray=getarray($sourcearray,'name');
    ca fonctionne mais j'ai l'impression qu'on peut faire mieux, sans forcément passer par une fonction. Vraie ou fausse impression ?

    d'avance merci !
    laloune
    Consultant B.I.
    Spécialité(s): Excel, SQL, Business Intelligence (Jedox Palo, Talend)

    "A problem worthy of attack proves its worth by fighting back." Piet Hein

  2. #2
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 484
    Points : 873
    Points
    873
    Par défaut
    je crois que j'ai trouvé... si ca peut aider quelqu'un:

    array_column (http://www.php.net/manual/en/functio...umn.php#113375)

    qui n'est disponible qu'à partir de PHP 5.5.

    Par contre un utilisateur a donné une solution satisfaisante utilisant array_map pour contourner le problème de version:

    si $array est mon tableau de départ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayextr=array_map(function($element){return $element['name'];}, $array);
    cheers
    laloune
    Consultant B.I.
    Spécialité(s): Excel, SQL, Business Intelligence (Jedox Palo, Talend)

    "A problem worthy of attack proves its worth by fighting back." Piet Hein

  3. #3
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 484
    Points : 873
    Points
    873
    Par défaut
    bonjour à tous,

    je déterre mon post car d'après ce que j'ai lu, ce n'est pas conseillé pour des questions de perf d'utiliser array_map, il vaut mieux passer par une boucle...

    du coup je ne comprend pas trop pourquoi on nous a sortir la fonction array_column en 5.5... une idée ?
    laloune
    Consultant B.I.
    Spécialité(s): Excel, SQL, Business Intelligence (Jedox Palo, Talend)

    "A problem worthy of attack proves its worth by fighting back." Piet Hein

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    d'après ce que j'ai lu, ce n'est pas conseillé pour des questions de perf d'utiliser array_map
    ??

    Tu as lu ça où ?

    Ces fonctions sont optimisées ne t'en fait pas, et à moins d'avoir un très très grand tableau (comprendre avec des millions de lignes), la différence de performances est complètement négligeable.


    EDIT : En fait si, dans ton cas foreach est plus adapté, la différence n'est pas négligeable quand il y a peu d'actions effectués dans le foreach (http://willem.stuursma.name/2010/11/...p-and-foreach/)
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 484
    Points : 873
    Points
    873
    Par défaut
    Tu as lu ça où ?
    exactement là où tu l'as lu toi-même :-)

    bon ben qu'il en soit ainsi... avec array_map c'est tout de même plus clair :-/
    laloune
    Consultant B.I.
    Spécialité(s): Excel, SQL, Business Intelligence (Jedox Palo, Talend)

    "A problem worthy of attack proves its worth by fighting back." Piet Hein

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

Discussions similaires

  1. Récupérer un tableau html multidimensionnel associatif sous javascript
    Par Mormegil dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2007, 17h47
  2. [Tableaux] Tableau multidimensionnel associatif
    Par Anne1969 dans le forum Langage
    Réponses: 12
    Dernier message: 20/02/2007, 14h51
  3. Nombre de dimensions d'un tableau multidimensionnel
    Par Bruno75 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/07/2005, 10h03
  4. type de donnée tableau multidimensionnel
    Par opheliegomes dans le forum Débuter
    Réponses: 2
    Dernier message: 03/02/2005, 12h29
  5. [langage] tableau multidimensionnel
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2002, 15h58

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