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 une partie de tableau d'après la liste des clefs souhaitées ou un tableau de clefs


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut Extraire une partie de tableau d'après la liste des clefs souhaitées ou un tableau de clefs
    Bonjour,
    J'ai parcouru toutes les fonctions sur les tableaux mais je n'ai pas trouvé ce que je cherche.
    Je souhaite créer un tableau2 qui contienne une partie d'un tableau1.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau1 = array('id'=>3, 'nom'='toto', 'prenom'='paul', 'age'=25)
    A partir de ce tableau, je veux créer un tableau2, connaissant les clefs qui m'intéressent par exemple 'id' et 'age' et sans connaître les valeurs.
    J'ai regardé, entre autre, les fonctions d'intersection mais elles nécessitent que les clefs et les valeurs soient identiques.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • array_intersect_key — Calcule l'intersection de deux tableaux en utilisant les clés pour comparaison



    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tableau1 = array('id'=>3, 'nom'=>'toto', 'prenom'=>'paul', 'age'=>25);
     
    $key_ok = array( 'id'=>'','age'=>'' ); // on définit ici les clés (key) à conserver
    $tableau2 = array_intersect_key($tableau1, $key_ok);
    var_dump( $tableau2 );
    Dernière modification par Invité ; 04/07/2018 à 19h16.

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Si j'ai bien compris...

    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
    <?php
    $tab = array(
    0=>array('id'=>3, 'nom'=>'toto', 'prenom'=>'paul', 'age'=>25),
    1=>array('id'=>200, 'nom'=>'dupont', 'prenom'=>'Elodie', 'age'=>33)
    );
    $selected_keys=array('nom','prenom');
    $smaller_tab=array();
    $i=0;
    foreach($tab as $row){
      foreach ($row as $key=>$value){
        if(in_array($key,$selected_keys)){
          $smaller_tab[$i][$key]=$value;
        }
      }
      $i++;
    }
    echo '<pre>';
    print_r($smaller_tab);
    echo '</pre>';

  4. #4
    Invité
    Invité(e)
    Par défaut
    Une variante :
    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
    <?php
    $tableau1 = array(
    	array('id'=>1, 'nom'=>'toto', 'prenom'=>'jean', 'age'=>25),
    	array('id'=>2, 'nom'=>'tata', 'prenom'=>'paul', 'age'=>36),
    	array('id'=>3, 'nom'=>'titi', 'prenom'=>'deux', 'age'=>47),
    	);
    var_dump( $tableau1 );
     
     
    $key_ok = array( 'id'=>'','age'=>'');
    foreach( $tableau1 as $tab1 )
    {
    	$tableau2[] = array_intersect_key($tab1, $key_ok);
    }
    var_dump( $tableau2 );
    ?>

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut
    Merci, jreaux62. Mon but était justement de remplacer une boucle comme celle de Dendrite. Je n'avais pas réussi à utiliser array_intersect_key, faute de connaître les valeurs du tableau 2 mais en fait, elles n'ont aucune importance.

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

Discussions similaires

  1. Extraire une partie d'un string
    Par Bloodscalp dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2006, 10h43
  2. Réponses: 7
    Dernier message: 18/07/2006, 14h56
  3. Réponses: 2
    Dernier message: 21/05/2006, 19h31
  4. extraire une partie d'image d'une image source
    Par Zen_Fou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2006, 11h20
  5. extraire une partie d'un document rtf
    Par yac dans le forum Oracle
    Réponses: 12
    Dernier message: 08/01/2006, 10h44

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