Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2011, 18h58   #1
Invité de passage
 
Inscription : février 2009
Messages : 33
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 33
Points : 2
Points : 2
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 :
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 :
1
2
3
4
5
 
foreach ($Tableau  as $valeur)
{
         echo $ valeur."<br/>";
}
Cela m’affiche :
Code :
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 :
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 :
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 ?
HappyTreeFred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 20h07   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
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 :
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 :
1
2
3
4
 
// PHP 5.3 only
$ids = array_map($tab, function ($el) { return $el[0]; });
echo implode(';', $ids);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 10h59   #3
Invité de passage
 
Inscription : février 2009
Messages : 33
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 33
Points : 2
Points : 2
Code :
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 :
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 :
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 ?
HappyTreeFred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 14h02   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Citation:
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 :
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;
}
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 14h18   #5
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
Citation:
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.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 18h44   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Je le dis pas souvent mais lol.
J'ai cru que c'était une typo.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h29.


 
 
 
 
Partenaires

Hébergement Web