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 :

foreach "tableaux dans un tableau"


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2022
    Messages : 10
    Points : 5
    Points
    5
    Par défaut foreach "tableaux dans un tableau"
    Bonjour, On me demande d'initialiser le tableau suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tabNotes = array (['bernard'] => array(12,20,14), ['bobo'] => array(6,18,4), ['bibi'] => array(9,17,14)
    L'objectif est d'afficher les notes et le nom de chaque personne.
    J'ai fais le code suivant avec la boucle foreach:
    ----------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $tabNotes = array( ['bernard'] => array(12,20,14), ['bobo'] => array(6,18,4), ['bibi'] => array(9, 17,14) )
    foreach($tabNotes as $nom => $notes)
    {
    echo "$nom => $notes\n";
    }
     
    ?>
    -----------------------------------------------------------------------------------------------------------------------------------

    Mais j'ai l'erreur suivante qui s'affiche :
    Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in [...] on line 4
    Merci beaucoup aux personnes pouvant me proposer des solutions pour ce sujet, bonne journée.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    En PHP on n'utilise plus array() depuis des années, mais simplement [].

    Remplace tes $data = array(123, 234); par $data = [123, 234];, ça allègera l'écriture et facilitera la lecture.

    Ce que tu écris revient à faire $data = [['bernard'] => [12, 20, 14], ...];, or PHP ne supporte pas les tableaux en clef de tableaux associatifs.

    Il faut faire : $data = ['bernard' => [12, 20, 14], ...];.

    Et concernant ton erreur, il manque un ";" final à la ligne d'initialisation.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2022
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je vous remercie pour votre aide.

    Cela va peut-être vous choquer mais c'est mon professeur de développement qui nous apprend php de cette manière 'ancienne'...

    J'ai le code actuel pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    $tabNotes = [['bernard'] => [2,10,14], ['bobo']=>[10,18,12], ['bibi'] => [19,6,14]]
     
     
    foreach($tabNotes as $nom => $notes)
    {
     
     echo "$nom => $notes\n";
     
    }
     
     
    ?>

    J'ai essayé avec le point virgule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    $tabNotes = [['prenot'] => [2,10,14], ['perthuis']=>[10,18,12], ['peter'] => [19,6,14]];
     
     
    foreach($tabNotes as $nom => $notes)
    {
     
     echo "$nom => $notes\n";
     
    }
     
     
    ?>
    Mais l'erreur suivante s'affiche :
    Fatal error: Illegal offset type in [...] on line 3

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Et bien il serait temps que ton prof mette ses cours à jour, [] remplace array() depuis PHP 5.4 (2012)

    Concernant ton erreur, il faut bien lire (et appliquer) tout mon message :

    Ce que tu écris revient à faire $data = [['bernard'] => [12, 20, 14], ...];, or PHP ne supporte pas les tableaux en clef de tableaux associatifs.
    Il faut faire : $data = ['bernard' => [12, 20, 14], ...];
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2022
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonsoir, j'ai mieux pris en compte votre réponse en soumettant le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    $tabNotes = ['bernard' => [2,10,14], 'bobo' => [10,18,12], 'bibi' => [19,6,14]];
     
     
    foreach($tabNotes as $nom => $notes)
    {
     
     print_r($tabNotes);
     
    }
     
     
    ?>
    En mettant print_r, j'ai la réponse suivante:
    Array
    (
    [bernard] => Array
    (
    [0] => 2
    [1] => 10
    [2] => 14
    )

    [bobo] => Array
    (
    [0] => 10
    [1] => 18
    [2] => 12
    )

    [bibi] => Array
    (
    [0] => 19
    [1] => 6
    [2] => 14
    )

    )
    Array
    (
    [bernard] => Array
    (
    [0] => 2
    [1] => 10
    [2] => 14
    )

    [bobo] => Array
    (
    [0] => 10
    [1] => 18
    [2] => 12
    )

    [bibi] => Array
    (
    [0] => 19
    [1] => 6
    [2] => 14
    )

    )
    Array
    (
    [bernard] => Array
    (
    [0] => 2
    [1] => 10
    [2] => 14
    )

    [bobo] => Array
    (
    [0] => 10
    [1] => 18
    [2] => 12
    )

    [bibi] => Array
    (
    [0] => 19
    [1] => 6
    [2] => 14
    )

    )
    Si je laissais echo "$nom => $notes\n";, j'avais le message suivant:
    Notice: Array to string conversion in E:\laragon\www\tab-assoc\exercice3_1.php on line 9
    bernard => Array

    Notice: Array to string conversion in E:\laragon\www\tab-assoc\exercice3_1.php on line 9
    bobo => Array

    Notice: Array to string conversion in E:\laragon\www\tab-assoc\exercice3_1.php on line 9
    bibi => Array

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Comme le message l'indique tu ne peux pas afficher un tableau ($notes) avec echo (Array to string conversion).

    Comme tu travail avec un tableau à plusieurs dimensions , si tu veux afficher traditionnellement , il faut parcourir chaque dimensions, donc dans ton cas quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach($tabNotes as $nom => $notes)
    {
        echo $nom." : <br>";
        // $notes est encore un tableau , il faut donc le parcourir aussi
         foreach($notes as $note) {
            echo $note."<br>";
        }
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2022
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    D'accord merci beaucoup

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

Discussions similaires

  1. [Débutant] Tableaux dans un tableau de structure
    Par am49214 dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/03/2016, 19h22
  2. Réponses: 0
    Dernier message: 08/09/2015, 15h28
  3. [Débutant] Mettre des tableaux dans un tableau
    Par clem3900 dans le forum MATLAB
    Réponses: 4
    Dernier message: 05/07/2012, 13h05
  4. Affichage de tableaux dans un tableau HTML
    Par remus69 dans le forum Langage
    Réponses: 7
    Dernier message: 03/04/2012, 14h29
  5. 2 tableaux dans un tableau HTML Possible ?
    Par bilou95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/08/2007, 19h31

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