简体   繁体   English

遍历数组内的JSON数组

[英]Loop through JSON array inside an array

Previously I was using a foreach loop to access the data in my JSON object but now I have nested an array inside an array. 以前,我使用foreach循环访问JSON对象中的数据,但现在我已将数组嵌套在数组中。 Here is my JSON 这是我的JSON

{
  "name": "Takeaway Kings",
  "menu": [
    {
      "starter": [
        {
          "name": "Samosas",
          "price": 3.5
        },
        {
          "name": "Chaat",
          "price": 1.99
        }
      ]
    },
    {
      "dessert": [
        {
          "name": "Kulfi",
          "price": 2.5
        },
        {
          "name": "Kheer",
          "price": 2.99
        }
      ]
    },
    {
      "main": [
        {
          "name": "Lamb Biryani",
          "price": 4.5
        },
        {
          "name": "Chicken Tikka Masala",
          "price": 5.99
        }
      ]
    }
  ]
}

I am trying to loop through each array inside menu and then loop through what is in each nested array. 我试图遍历菜单内的每个数组,然后遍历每个嵌套数组中的内容。

I was previously using this to output data before I changed the JSONObject layout. 在更改JSONObject布局之前,我以前曾用它来输出数据。

<?php foreach($restaurant->menu->starter as $starter){
               echo '<h3>'.$starter->name.'</h3><br><p>'.$starter->price.'</p><br>'; 

           } ?>

Please Use Below Code For use Inner Values 请使用以下代码以使用内部值

$data=json_decode($data);
    foreach($data->menu as $menu){
        foreach($menu as $key => $value){
            foreach($value as $key_inner => $value_inner){
                 echo '<h3>'.$value_inner->name.'</h3><br><p>'.$value_inner->price.'</p><br>';
            }
        }
    }

try below code: 试试下面的代码:

$json = '{
  "name": "Takeaway Kings",
  "menu": [
    {
      "starter": [
        {
          "name": "Samosas",
          "price": 3.5
        },
        {
          "name": "Chaat",
          "price": 1.99
        }
      ]
    },
    {
      "dessert": [
        {
          "name": "Kulfi",
          "price": 2.5
        },
        {
          "name": "Kheer",
          "price": 2.99
        }
      ]
    },
    {
      "main": [
        {
          "name": "Lamb Biryani",
          "price": 4.5
        },
        {
          "name": "Chicken Tikka Masala",
          "price": 5.99
        }
      ]
    }
  ]
}';

echo '<pre>';
$json_arr = json_decode($json, true);
//print_r(call_user_func_array('array_merge',$json_arr['menu']));

echo "name: " . $json_arr['name'];
echo '<br />';
$menu_array = call_user_func_array('array_merge',$json_arr['menu']);
foreach ($menu_array as $name => $arr) {
    echo '<br />';
    echo "Menu name: " . $name;
    foreach($arr as $v){
        echo '<br />';
        echo $v['name'].' : '.$v['price'];
    }
}

output: 输出:

name: Takeaway Kings
Menu name: starter
Samosas: 3.5
Chaat: 1.99
Menu name: dessert
Kulfi: 2.5
Kheer: 2.99
Menu name: main
Lamb Biryani: 4.5
Chicken Tikka Masala: 5.99

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM