PHP JSON Array Multi Level - PullRequest
       7

PHP JSON Array Multi Level

0 голосов
/ 18 апреля 2020

Я застрял в рассоле, пытаясь разобраться с JSON Разбором массива.

Мне нужно взять массив JSON и разбить информацию.

Подача JSON выглядит следующим образом -

[
    {
        "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
            }
           ]
        }
]

Я выполнил следующий код для первоначального декодирования JSON

$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, чтобы получить значения массива в разделе «Опции» JSON, но простое добавление дополнительного foreach, кажется, не работает так, как хотелось!

Я уверен, что это будет простое исправление, НО я не могу кажется, чтобы понять это!

Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Вы можете просто сделать это:

$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 голосов
/ 18 апреля 2020

попробуйте это:

$array = json_decode($json_value,true);
$opt = $array['Options'];
foreach($opt as $item) {
    echo $item['ID'];
}
0 голосов
/ 18 апреля 2020

Я не могу правильно понять, вы можете напрямую выбрать параметры с помощью

$Options = $item['Options'];

, укажите ожидаемый результат

РЕДАКТИРОВАТЬ: возможно, вы захотите это

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

это полностью исключит ваш foreach l oop, удалите foreach l oop и добавьте строку выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...