【问题标题】:PHP JSON Array Multi LevelPHP JSON 数组多级
【发布时间】:2020-04-18 10:40:28
【问题描述】:

我在尝试处理 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 似乎没有达到预期的效果!

我确定这将是一个简单的修复,但我似乎无法弄清楚!

感谢您的帮助!

【问题讨论】:

  • 您面临的具体问题是什么?
  • 感谢您的回复! - 第二个 foreach 没有显示任何结果...
  • 你能发布你的代码吗,你是如何使用第二个 foreach 的?
  • 我最初使用的是foreach($item['Options'] as $values) { ,但这似乎不起作用!不过现在一切都整理好了!

标签: php arrays json foreach


【解决方案1】:

你可以这样做:

$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
    }
}

【讨论】:

    【解决方案2】:

    试试这个:

    $array = json_decode($json_value,true);
    $opt = $array['Options'];
    foreach($opt as $item) {
        echo $item['ID'];
    }
    

    【讨论】:

      【解决方案3】:

      我看不懂,你可以直接选择Options by

      $Options = $item['Options'];
      

      请提供您的预期输出

      编辑:你可能想要这个

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

      这完全消除了你的 foreach 循环,删除 foreach 循环并添加上面的行

      【讨论】:

      • 感谢您的回复 - 理想情况下,我需要将这些选项分解为一个 foreach 以便为列出的每个选项运行一个进程。
      • Shubham 解决了这个问题我想我会通过使用foreach($item['Options'] as $values) 来错误地处理下一个问题,这似乎不起作用!现在都整理好了!
      猜你喜欢
      • 2013-02-05
      • 2015-04-08
      • 2013-04-14
      • 1970-01-01
      • 2023-03-08
      • 2013-10-27
      • 1970-01-01
      • 2023-03-28
      • 2017-03-27
      相关资源
      最近更新 更多