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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 éclairé
    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
    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
    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 éclairé
    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
    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 éclairé
    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
    Par défaut
    je ferme ce poste

  6. #6
    Membre éclairé
    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
    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

+ 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