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 :

Boucle Foreach et tableaux avec clés-valeurs


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 52
    Points : 30
    Points
    30
    Par défaut Boucle Foreach et tableaux avec clés-valeurs
    Bonjour,

    J'essaye d'afficher une valeur de mo tableau (array) qui possède des clés => valeurs avec "echo" , mais j'obtiens toujours un message d'erreur.

    Voici mon code. L'erreur vient de la dernière ligne (echo):

    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
    20
    <?php
          // Créez votre propre tableau associatif: 
    $myArray = array('Tarzan' => 'Puissant', 'Bioman' => 'Techno', 'Iron Man' => 'Geek', 'Batman' => 'Mystérieux');
     
     
     
          // Ici, affichez l'une des valeurs :
         echo $myArray['Tarzan'];
     
     
          // Ici, parcourez votre tableau et affichez 
          // *tous* les éléments:
     
         $length = count($myArray);
     
         foreach ($myArray as $Superhero => $Qualificatif) {
     
             echo ' 'Le superhero suivant ' .$Superhero. 'a le qualificatif suivant ' .$Qualificatif ' ;
     
          ?>

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Il manque l'accolade fermeture du foraech et deux quotes de trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
         foreach ($myArray as $Superhero => $Qualificatif) {
     
             echo  'Le superhero suivant ' .$Superhero. 'a le qualificatif suivant ' .$Qualificatif  ;
     }
          ?>

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 52
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Effectivement il me manquait l'accolade fermante.

    Mais ça ne marche toujours pas...J'ai remplacer les " ' " ouvrants et fermants de echo par des guillemets " " " et la miracle le texte s'affiche super bien!

    Sauf que le système correcteur du site me met "Oups, merci de réessayer. Il semble que l'élément 'Tarzan=>Puissant' fait partie de votre tableau $myArray, mais il ne semble pas affiché dans la page ! "

    Alors que le texte suivant s'affiche: Puissant 'Le superhero suivant '.Tarzan 'a le qualificatif suivant' .Puissant ' 'Le superhero suivant '.Bioman 'a le qualificatif suivant' .Techno ' 'Le superhero suivant '.Iron Man 'a le qualificatif suivant' .Geek ' 'Le superhero suivant '.Batman 'a le qualificatif suivant' .Mystérieux '

    Code modifié:
    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
    20
    21
    22
     
    <?php
          // Créez votre propre tableau associatif: 
    $myArray = array('Tarzan' => 'Puissant', 'Bioman' => 'Techno', 'Iron Man' => 'Geek', 'Batman' => 'Mystérieux');
     
     
     
          // Ici, affichez l'une des valeurs :
         echo $myArray['Tarzan'];
     
     
          // Ici, parcourez votre tableau et affichez 
          // *tous* les éléments:
     
         $length = count($myArray);
     
         foreach ($myArray as $Superhero => $Qualificatif) {
     
             echo " 'Le superhero suivant '.$Superhero 'a le qualificatif suivant' .$Qualificatif ' ";
         }
     
          ?>

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    et comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     echo  'Le superhero suivant' . $Superhero .' a le qualificatif suivant' . $Qualificatif;

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 52
    Points : 30
    Points
    30
    Par défaut
    Même message d'erreur...c'est connu pour bugger..La dernière fois pour un autre exercice il fallait un formatage très spécial..

    Mais j'ai testé mon code précédent avec PHPtester sur le Web et aucun message d'erreur.

    Voici les instructions de l'exercice:


    ---------------------------------------------------
    A vous de jouer

    C'est le temps de pratiquer tout ce que vous avez appris jusqu'ici sur les tableaux associatifs. Voici quelques rappels rapides :

    Les tableaux en PHP sont de base zéro (cela signifie que le numéro de la première valeur du tableau est toujours 0, pas 1 !).

    Un tableau peut contenir des valeurs ("val1", "val2", etc...)

    Un tableau associatif, peut contenir des clés et des valeurs ("key1" => "val1", "key2" => "val2", etc...)

    Un tableau multidimensionnel peut contenir des tableaux dans le tableau !

    Pour parcourir un tableau contenant des valeurs uniquement, vous pouvez utiliser la boucle for. Pour un tableau associatif contenant les clés et les valeurs, vous pouvez utiliser la boucle foreach.
    Instructions

    Créez une variable appelée $myArray comme un tableau que vous créez, qui peut contenir tous les articles que vous aimez (ou comme le panier d'un site marchant).
    Prenez une valeur de votre tableau et affichez-la.
    Maintenant parcourez le tableau et affichez le contenu dans la page !

    ?
    Bloqué ? Voici une astuce !



    Lorsque vous utilisez la boucle for, il faut compter au préalable la longueur du tableau, en utilisant count().
    L'autre solution consiste à utiliser le count() pour établir la condition d'arrêt du for, mais dans ce cas, pour chaque "tour de boucle", l'ordinateur devra compter à nouveau la taille du tableau. C'est généralement pas nécessaire !

    Mais parfois, si ! Imaginez qu'à chaque itération de la boucle, vous ayez besoin de réaliser des opérations complexes qui changent le contenu du tableau en ajoutant ou supprimant des éléments dans le tableau...

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    supprimer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
          // Ici, parcourez votre tableau et affichez 
          // *tous* les éléments:
     
         $length = count($myArray);

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Octobre 2015
    Messages : 52
    Points : 30
    Points
    30
    Par défaut
    Même message d'erreur...C'est dingue...Peut-être qu'il faut qu'on fasse une boucle "for" classique plutôt avec commepoint d'arrêt count comme indiqué?

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Possible mais dans ce cas pas de clé - valeur.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    L'exercice ne demande pas les clefs et d'ailleurs ne fonctionne pas avec un tableau associatif :
    Il ne fonctionne pas non plus avec des espaces dans les valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
          // Créez votre propre tableau associatif: 
        $myArray = array('Tarzan', 'Bioman', 'IronMan', 'Batman');
     
          // Ici, affichez l'une des valeurs :
        echo $myArray[0];
     
          // Ici, parcourez votre tableau et affichez 
          // *tous* les éléments:
         foreach ($myArray as $key=>$value) {
            echo $value;
         }
          ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [AC-2010] Alimenter une variable tableaux avec les valeurs d'un champs
    Par curt dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/11/2011, 19h26
  2. [Tableaux] Boucle foreach inbriquée
    Par nebil dans le forum Langage
    Réponses: 17
    Dernier message: 10/09/2006, 11h40
  3. Réponses: 3
    Dernier message: 12/06/2006, 12h04
  4. [Tableaux] la boucle foreach
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 09/03/2006, 17h29
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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