Je suis coincé dans un cornichon essayant de traiter avec un JSON Array Parse.

J'ai besoin de prendre un tableau JSON et de décomposer les informations.

Le flux JSON est le suivant -

[
    {
        "ID": "344",
        "MaxOptions": 4,
        "MinOptions": 0,
        "ModifierGUID": "",
        "Name": "Remove Items",
        "Options": [
            {
                "DefaultOption": true,
                "Description": "",
                "ID": "68557",
                "MaxSelections": 99,
                "Name": "Remove Tomato ",
                "OptionGUID": "",
                "OptionItemID": "8e362d67-2a1e-4a31-9b54-48b19a147813",
                "PLU": "",
                "Price": 0.0000,
                "TakeawayPrice": 0
            },
            {
                "DefaultOption": true,
                "Description": "",
                "ID": "69254",
                "MaxSelections": 4,
                "Name": "Remove Cheese",
                "OptionGUID": "",
                "OptionItemID": "f1dbaaf5-be18-462b-8c7a-6207cb3deaf3",
                "PLU": "",
                "Price": 0.0000,
                "TakeawayPrice": 0
            }
           ]
        }
]

J'ai exécuté le code suivant pour décoder le JSON initialement

$json_url = ""; // INSIDE QUOTES THE JSON URL
$json_value = file_get_contents($json_url);
$array = json_decode($json_value,true);
foreach($array as $item) {
echo $item['ID']; // This Returns "344"
}

C'est correct, mais je dois maintenant exécuter un foreach supplémentaire pour obtenir les valeurs du tableau dans la section "Options" du JSON, mais simplement ajouter un foreach supplémentaire ne semble pas faire comme souhaité!

Je suis sûr que ça va être une solution simple MAIS je n'arrive pas à le comprendre!

Merci pour l'aide!

-1
Grew 18 avril 2020 à 13:40

3 réponses

Meilleure réponse

Vous pouvez simplement faire ceci:

$json_url = ""; // INSIDE QUOTES THE JSON URL
$json_value = file_get_contents($json_url);
$array = json_decode($json_value,true);
foreach($array as $item) {
    echo $item['ID']; // This Returns "344"
    foreach($item['Options'] as $option) {
        //do the needed processing here
    }
}
0
shr3jn 18 avril 2020 à 11:10

Je ne comprends pas bien, vous pouvez directement sélectionner Options en

$Options = $item['Options'];

Veuillez fournir votre sortie attendue

EDIT: vous voudrez peut-être cela

$Options = array_column($array, 'Options');

Cela élimine totalement votre boucle foreach, supprimez la boucle foreach et ajoutez la ligne ci-dessus

0
Shubham Sakharkar 18 avril 2020 à 11:14

Essaye ça:

$array = json_decode($json_value,true);
$opt = $array['Options'];
foreach($opt as $item) {
    echo $item['ID'];
}
0
Vipin 18 avril 2020 à 11:13