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 valeur dans un tableau à 2 dimensions


Sujet :

Langage PHP

  1. #1
    Membre expert
    extraire une valeur dans un tableau à 2 dimensions
    Bonjour,
    je lis des fichiers CSV. Donc je récupère un tableau dont chaque élément comporte lui-même un tableau qui contient un enregistrement (ou une ligne) du fichier CSV. Il s'agit donc d'un tableau à 2 dimensions. Je voudrais extraire la colonne 1 de chaque enregistrement du CSV. Voici mon code (on suppose que la lecture du fichier CSV est déjà faite et que son contenu est dans le fichier $val)

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     foreach($val as $val_bdd)  //$val_bdd is an array with one line of the CSV file
        {
         $val_bdd=explode(',',$val_bdd);
         foreach ($val_bdd as $val_in_line_csv)
                         {
                             if (($i++)==1) echo "val_1=".$val_in_line_csv."<br/>";
                         }
       }
    Non seulement c'est pas au point (aucun affichage), mais même si marchait, on doit pouvoir mieux faire. Comment ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  2. #2
    Modérateur

    salut,

    array_column() devrait répondre à ton besoin.

  3. #3
    Membre expert
    Bonsoir,
    j'ai regardé array_column. Ca conviendrait si j'avais un tableau associatif. Le souci est qu'après avoir effectué un foreach sur le tableau retourné en lisant le contenu du CSV, je récupère des chaînes de caractères. Je les convertis en tableaux avec un explode, mais c'est un tableau numérique. Par contre, je connais le nom des colonnes et ça ne change jamais (il suffit de lire la première ligne du CSV), donc l'idéal serait de pouvoir convertir ce tableau numérique en tableau associatif où chaque index serait le nom de colonne.

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     foreach($val as $val_bdd)  //$val_bdd is an array with one line of the CSV file
    {
          $val_bdd=explode(',',$val_bdd);
          var_dump($val_bdd);echo "<br/>"; //$val_bdd is a numeric array
    ...
    }


    Prenons un exemple simple :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $arr=(0=>'elt0',
          1=>'elt1',
          2=>'elt2');
    $list_column=['index0','index1','index2'];

    comment convertir le tableau en
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $arr_assoc=('index0'=>'elt0',
                'index1'=>'elt1',
                'index2'=>'elt2');
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  4. #4
    Modérateur

    comme ça :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $data = array_combine($list_column, $arr);