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 :

Impossible d'afficher les valeurs d'un tableau multidimensionnel


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Par défaut Impossible d'afficher les valeurs d'un tableau multidimensionnel
    Salut à tous !
    J’ai un problème pour afficher la valeur contenu dans un tableau multidimensionnel.
    Voici le tableau avec lequel je suis obligé de travailler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                    $Tableau = Array ( [0] => Array ( [0] => ID-1111
                                                      [1] => REF-1111 )
                                  [1] => Array ( [0] => ID-2222
                                                      [1] => REF-2222)
                                  [2] => Array ( [0] => ID-3333
                                                      [1] => REF-3333)
                                  [3] => Array ( [0] => ID-4444
                                                      [1] => REF-4444)
                                  [4] => Array ( [0] => ID-5555
                                                      [1] => REF-5555)
    Je souhaite afficher seulement tous les Identifiants, pour cela voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($Tableau  as $valeur)
    {
             echo $ valeur."<br/>";
    }
    Cela m’affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Array (  [0] => ID-1111 [1] => REF-1111 )
    Array (  [0] => ID-2222 [1] => REF-2222 )
    // Array ...etc
    Même en rajoutant l'indice du tableau comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($Tableau  as $valeur)
    {
         echo $ valeur[0]."<br/>";
    }
    J’obtiens seulement la lettre « A » (la premiere valeur du mot « Array »)


    J’ai essayé toute les index possibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo $ valeur[0][0]    // Fatal error: Cannot use string offset as an array
    echo $ valeur[0][0]   // Fatal error: Cannot use string offset as an array
    echo $ valeur[0][0]   // Fatal error: Cannot use string offset as an array
    echo $ valeur[0][0]  // Notice: Use of undefined constant ‘0’ - assumed '0’
    echo $ valeur[0]       // Notice: Use of undefined constant ‘0’ - assumed '0’
    Je vois vraiment pas comment accédé à la première valeur de chaque sous-tableau mon tableau principal…:/
    Quelqu’un à déjà eut ce genre de soucis ?

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Ne confons pas les quotes ' et les bakcquotes ` car en PHP les backquotes sont un alias de exec.

    Pour itérer à travers un tableau multidimentionnel il te faut soit une boucle imbriquée soit un iterateur approprié. Je pense que les boucles te suffiront.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    foreach ($tab as $subtab)
    {
        foreach ($subtab as $key => $value)
        {
            echo "$key => $value";
        }
    }
     
    // obtenir un index
    if (isset($tab[0][0)) // à utiliser systématiquement car si l'index n'existe pas une erreur est lancée
      echo $tab[0][0];
    Pour réccupérer uniquement les id dans un tableau tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // PHP 5.3 only
    $ids = array_map($tab, function ($el) { return $el[0]; });
    echo implode(';', $ids);

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach ($tableau as $subtab)
    {
        foreach ($subtab as $key => $value)
        {
            echo "$key => $value";
        }
    }
    Ce code m'affiche : Warning: Invalid argument supplied for foreach()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset($tableau[0][0])) 
    {
         echo $tableau[0][0];
    }
    Ce code m'affiche encore la lettre A. Ceci doit ramener le premier enregistrement sous forme de chaine et renvoyé la 1er valeur (la première lettre)

    Quant à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ids = array_map($tableau, function ($el) { return $el[0]; });
    echo implode(';', $ids);
    Je ne le comprend pas et Eclipse me renvoi plusieur erreurs. D'ou vient $el passé en paramètre de la fonction ?

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je ne le comprend pas et Eclipse me renvoi plusieur erreurs. D'ou vient $el passé en paramètre de la fonction ?
    C'est pour PHP 5.3 et plus. ça ne marche pas pour les version 5.1 et 5.2 qui n'ont pas les closures. Regarde le prototype de array_map pour comprendre comment le changer si tu n'utilise pas PHP 5.3.
    Tu peux changer la version de PHP à utiliser pour ton projet dans ton workspace Eclipse ou dans les propriétés du projet.

    Tu as copié/collé mon code sans rien changer ? si c'est le cas, c'est normal que tu aies des erreurs car dans mon exemple j'utilise la variable $tableau et toi tu avait mis $Tableau (les variables sont case-sensitives).
    Pense à ajouter une vérification comme ça, ça ne mange pas de pain:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foreach ($Tableau as $subtab)
    {
        if (is_array($subtab))
        {
            foreach ($subtab as $key => $value)
                echo "$key => $value";
        }
        else echo (string)$subtab;
    }

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    echo $ valeur[0][0]
    le jour ou la séquence "dollar espace" constitue un nom de variable valable ton problème sera résolu.
    Pas besoin d'aller chercher midi à quatorze heures.

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je le dis pas souvent mais lol.
    J'ai cru que c'était une typo.

Discussions similaires

  1. [JpGraph] Impossible d'afficher les valeurs de l'histogramme
    Par Baldy dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/06/2012, 15h15
  2. [PHP 5.0] [array] afficher les valeurs d'un tableau à plusieurs éléments
    Par mdr_cedrick dans le forum Langage
    Réponses: 1
    Dernier message: 25/02/2009, 11h33
  3. [MySQL] Afficher les valeurs d'un tableau pour des cases à cocher
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/12/2008, 17h45
  4. Afficher les valeurs d'un tableau dans la fenêtre d'exécution
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/12/2008, 14h14
  5. [JSTL] Impossible d'afficher les valeurs d'un c:out
    Par nicolas.pied dans le forum Taglibs
    Réponses: 8
    Dernier message: 27/04/2008, 23h49

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