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 :

Récupérer les valeurs qui se trouvent dans un array numéroté [PHP 5.5]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut Récupérer les valeurs qui se trouvent dans un array numéroté
    J'ai un data json :
    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
    23
    24
    25
    {
         "ecole": "St denis",
    	 "informations": [
            {
                "title": "qui",
                "contenu": "etudiant"
            },
            {
                "title": "classe",
                "contenu": "1aa"
            },
            {
                "title": "departement",
                "contenu": "GEO"
            },
            {
                "title": "branche",
                "contenu": "amerique"
            },
            {
                "title": "note",
                "contenu": "12"
            }
        ]
    }
    et je le transforme en array pour récupérer les informations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dataJson = "fichiers_pour_arrays/array_json.json";
     
    $dataJson = file_get_contents($dataJson);
     
    $dataJson_decode_array = json_decode($dataJson, true);
    et ce que j'obtiens :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Array
    (
        [0] => Array
            (
                [title] => qui
                [contenu] => etudiant
            )
     
        [1] => Array
            (
                [title] => classe
                [contenu] => 1aa
            )
     
        [2] => Array
            (
                [title] => departement
                [contenu] => GEO
            )
     
        [3] => Array
            (
                [title] => branche
                [contenu] => amerique
            )
     
        [4] => Array
            (
                [title] => note
                [contenu] => 12
            )
     
    )
    et Voici ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($dataJson_decode_array['informations'] as $key_dataJson_decode_array => $value)
    {
     
    	$trouver = $value['contenu']; 
     
    	echo $trouver . '</p><p></p>';
     
    }
    avec cela j'obtiens :
    trouver :
    etudiant
    1aa
    GEO
    amerique
    123
    Maintenant, j'aimerais récupérer à chaque valeur dans une autre variable et voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $qui = $value['contenu'][0];
    $classe = $value['contenu'][1];
    $departement = $value['contenu'][2];
    $branche = $value['contenu'][3];
    $note = $value['contenu'][4];
    Mais cela ne marche pas.
    Vous pouvez m'expliquer svp.


    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    En fait, je peux trouver les valeurs facilement avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $dataJson = file_get_contents($dataJson);
     
    $dataJson_decode_array = json_decode($dataJson, true);
     
    $qui = $dataJson_decode_array['informations'] [0][contenu];
    $classe = $dataJson_decode_array['informations'] [1][contenu];
    $departement = $dataJson_decode_array['informations'] [2][contenu];
    $branche = $dataJson_decode_array['informations'] [3][contenu];
    $note = $dataJson_decode_array['informations'] [4][contenu];
    Mais est-ce qu'il y a une autre solution ? Plus dynamique ?


    merci

  3. #3
    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
    Ca sera beaucoup plus logique de rester dans un tableau, il faut simplement reduire un niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($dataJson_decode_array['informations'] as $value)
    {
            $data[$value['title']] = $value['contenu'];
    }
     
    echo $data['branche'];
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Encore merci Sabotage,

    Ça marche bien et je savais que je n'étais pas sur la bonne piste.

    Me je ne le trouvais jamais.

    Merci

  5. #5
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    je ferme ce poste

  6. #6
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Bonjour Sabotage,

    En fait, il y a un papin...
    Mon fichier json, c'est un peu différent qu'avant : Il est généré dynamiquement : je n'ai pas de contrôle!
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    {
     "comission": [
          {
            "ecole": "St Michel",
            "qui": [
     
            ],
            "province": "QC"
          },
          {
            "ecole": "St denis",
            "qui": [
              {
                "label": "etudiant",
                "info_contenu": "Dupont"
              },
              {
                "label": "prenom",
                "info_contenu": "Jean"
              },
              {
                "label": "marticule",
                "info_contenu": "007JB"
              },
              {
                "label": "classe",
                "info_contenu": "5xxxx"
              }
            ],
    		"province": "QC"
          }
        ]
    	}
    Mais pour que je comprenne mieux, je vais faire étape par étape :
    Alors si mon json n'a qu'un seul array (qui) :
    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
    23
    24
    25
    26
    27
    	{
     "comission": 
     
          {
            "ecole": "St denis",
            "qui": [
              {
                "label": "etudiant",
                "info_contenu": "Dupont"
              },
              {
                "label": "prenom",
                "info_contenu": "Jean"
              },
              {
                "label": "marticule",
                "info_contenu": "007JB"
              },
              {
                "label": "classe",
                "info_contenu": "5xxxx"
              }
            ],
    		"province": "QC"
          }
     
    	}
    Pour cela, je fais :
    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
    23
    24
    $contenu_externe = "monRepertoire/soru.json";
    $contenu_externe = file_get_contents($contenu_externe);
    $data_venu_transforme_array = json_decode($contenu_externe, true);
     
    foreach ($data_venu_transforme_array['comission']['qui'] as $cle_value_dans_array)
    {
            $data_trouve[$cle_value_dans_array['label']] = $cle_value_dans_array['info_contenu'];
     
     
    }
     
    $etudiant = $data_trouve['etudiant'];
    $prenom = $data_trouve['prenom'];
    $marticule = $data_trouve['marticule'];
    $classe = $data_trouve['classe'];
     
    echo '<p></p><p></p><p></p>';
     
     
    echo '<p>etudiant : ';
    echo $etudiant .'</p><p>prenom :  ';
    echo $prenom.'</p><p>marticule :  ';
    echo $marticule.'</p><p>classe :  ';
    echo $classe.'</p> ';
    et j'obtiens :
    etudiant : Dupont

    prenom : Jean

    marticule : 007JB

    classe : 5xxxx
    Donc tout va bien.

    Mais mon json est généré dynamiquement comme on voit dans 1er exemple ci-dessus.
    J'ai fait un 'var_dump' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump($data_venu_transforme_array);
    exit();
    et j'obtiens :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    	array(1) {
      ["comission"]=>
      array(2) {
        [0]=>
        array(3) {
          ["ecole"]=>
          string(9) "St Michel"
          ["qui"]=>
          array(0) {
          }
          ["province"]=>
          string(2) "QC"
        }
        [1]=>
        array(3) {
          ["ecole"]=>
          string(8) "St denis"
          ["qui"]=>
          array(4) {
            [0]=>
            array(2) {
              ["label"]=>
              string(8) "etudiant"
              ["info_contenu"]=>
              string(6) "Dupont"
            }
            [1]=>
            array(2) {
              ["label"]=>
              string(6) "prenom"
              ["info_contenu"]=>
              string(4) "Jean"
            }
            [2]=>
            array(2) {
              ["label"]=>
              string(9) "marticule"
              ["info_contenu"]=>
              string(5) "007JB"
            }
            [3]=>
            array(2) {
              ["label"]=>
              string(6) "classe"
              ["info_contenu"]=>
              string(5) "5xxxx"
            }
          }
          ["province"]=>
          string(2) "QC"
        }
      }
    }
    Alors je fais comme cela :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    if (!empty($data_venu_transforme_array['comission'][0]['qui'])) 
    	{
    		foreach ($data_venu_transforme_array['comission'][0]['qui'] as $cle_value_dans_array)
    		{
    				$data_trouve[$cle_value_dans_array['label']] = $cle_value_dans_array['info_contenu'];
     
     
    		}
     
     
    		$etudiant = $data_trouve['etudiant'];
    		$prenom = $data_trouve['prenom'];
    		$marticule = $data_trouve['marticule'];
    		$classe = $data_trouve['classe'];
     
    		echo '<p></p><p></p><p></p>';
     
     
    		echo '<p>etudiant : ';
    		echo $etudiant .'</p><p>prenom :  ';
    		echo $prenom.'</p><p>marticule :  ';
    		echo $marticule.'</p><p>classe :  ';
    		echo $classe.'</p> ';
     
    	}
     
    	 if (!empty($data_venu_transforme_array['comission'][1]['qui'])) 
    		{
    			foreach ($data_venu_transforme_array['comission'][1]['qui'] as $cle_value_dans_array)
    			{
    					$data_trouve[$cle_value_dans_array['label']] = $cle_value_dans_array['info_contenu'];
     
     
    			}
     
     
    			$etudiant = $data_trouve['etudiant'];
    			$prenom = $data_trouve['prenom'];
    			$marticule = $data_trouve['marticule'];
    			$classe = $data_trouve['classe'];
     
    			echo '<p></p><p></p><p></p>';
     
    			echo '<p>etudiant : ';
    			echo $etudiant .'</p><p>prenom :  ';
    			echo $prenom.'</p><p>marticule :  ';
    			echo $marticule.'</p><p>classe :  ';
    			echo $classe.'</p> ';
     
    		}
    Ca marche, mais c’est absurde et redondant ce code : et ce n'est pas bon parce qu'il peut avoir plus que 2. Donc ce n'est pas bon. Comment puis-je faire ?
    Est-ce qu'il y a une solution ?

    Merci et bonne journée

  7. #7
    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
    Ne te surcharge pas d'étapes et variables intermédiaires et de noms de variable a rallonge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($data_venu_transforme_array['comission'] as $comission_values) {
    	foreach ($comission_values['qui'] as $qui_values)
    		{
    		    echo '<p>' . $qui_values['label'] . ' : ' . $qui_values['info_contenu'] . '</p>';
     		}
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Bonjour Sabotage,

    Merci pour cette aide; ça marche bien.

    Tu dis :
    Citation Envoyé par sabotage Voir le message
    Ne te surcharge pas (... ...) de noms de variable a rallonge :
    J'essaye de nommer mes variables pour qu'une autre personne comprenne facilement lorsqu'il ne connait pas le contexte.

    Un fichier normal, qui contient 392 lignes (13500 caractères (avec les espaces)), peut être doublé par cette façon (variables rallonge), donc ce fichier peut contenir 785 lignes (27 000 caractères (avec les espaces).

    À ton avis, est-ce que cela peut ralentir l'exécution de ce fichier ou bien dans ce contexte (785 lignes (même si cela est double de 392), tout va bien puisque ce n'est pas grand-chose ?

    Merci

  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
    Non d'un point de vue performance, tu peux te lacher sur le nom des variables.

    Moi je trouve qu'au contraire un nom de variable trop long devient illisible.
    Surtout si la variable n'est utilisé que dans le code immédiat, son nom sera d'autant plus efficace qu'il est simple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    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
    En même temps si tu veux être compris par un autre il y a la magie du commentaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /**
    * ici je fais un truc hyper important
    *
    */

  11. #11
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Merci pour tous ces conseils,

    bonne journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2015, 18h07
  2. [PHP 5.4] Calculer les bonnes valeurs qui se trouvent dans un array ?
    Par tonton.odilon dans le forum Langage
    Réponses: 3
    Dernier message: 25/05/2015, 20h51
  3. Réponses: 2
    Dernier message: 04/02/2014, 17h13
  4. Récupérer les valeurs d'un noeud dans un fichier XML
    Par yosthegost dans le forum Delphi
    Réponses: 1
    Dernier message: 30/05/2006, 17h38
  5. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55

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