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 Perl Discussion :

foreach sur un tableau à plusieurs dimensions


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut foreach sur un tableau à plusieurs dimensions
    Bonjour,

    débutant en Perl, j'ai un soucis d'accès aux données d'un tableau à plusieurs dimensions :
    j'ai un tableau à 2 colonnes rempli et je voudrais boucler sur les éléments de la 2e colonne d'une ligne donnée.
    Exemple simplifié :
    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
    my @tab;
    $tab[0][0]='a';
    $tab[0][1]='b';
    $tab[0][2]='c';
    $tab[1][0]='d';
    $tab[1][1]='e';
    $tab[1][2]='f';
    $tab[2][1]='g';
    ...
     
    foreach my $data (@tab[1] ???)
    {
       # $data prendra les valeurs d, e, f
       traitement($data); 
    }
    Mais je ne sais pas quelle est la syntaxe du foreach...

  2. #2
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Peut-être qu'avec des for?
    Mais il y a probablement mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    my $ref_tab = \@tab;
     
    for (my $a=0; $a<2; $a++)
    {
          for (my $b=0; $b<3; $b++)
          {
     
                    print $a."\t".$b."\t".$ref_tab->[$a]->[$b]."\n";
          }
    }
    Peut-être avec la fonction map?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map { print $ref_tab->[$_]->[$_]} $ref_tab;

    Jasmine,

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ton tableau m'a l'air d'avoir plus de deux colonnes :
    ??

    Pour itérer sur la deuxième colonne, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach my $data ( @{$tab[1]} ) {
       # $data prendra les valeurs d, e, f
       traitement($data); 
    }
    En effet, $tab[1] est une référence vers le tableau contenant la deuxième colonne, il suffit de la déréférencer avec @{ }.

    --
    Jedaï

  4. #4
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Heu oui, il y a 3 colonnes, effectivement.
    Je vais essayer vos solutions, la syntaxe Perl est un peu nébuleuse pour moi...

  5. #5
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Ca marche avec la solution de Jedai.
    Merci à vous 2.

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

Discussions similaires

  1. Initialisation d'un tableau à plusieurs dimensions
    Par kinouseb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/02/2007, 13h16
  2. problème avec un tableau à plusieurs dimensions
    Par lelutin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/09/2006, 12h05
  3. Réponses: 3
    Dernier message: 26/05/2006, 19h49
  4. Réponses: 7
    Dernier message: 19/01/2006, 18h57
  5. tableau à plusieurs dimensions
    Par pekka77 dans le forum C
    Réponses: 11
    Dernier message: 07/02/2005, 19h42

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