通过内部数组JSON数组循环 [英] Loop through JSON array inside an array

查看:174
本文介绍了通过内部数组JSON数组循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

previously我是用foreach循环来访问我的JSON对象中的数据,但我现在已经嵌套在一个阵列内的阵列。这里是我的JSON

  {
  名:外卖王
  菜单:[
    {
      启动器:
        {
          名:咖喱角,
          价格:3.5
        },
        {
          名:Chaat
          价格:1.99
        }
      ]
    },
    {
      甜点: [
        {
          名:Kulfi
          价格:2.5
        },
        {
          名:Kheer
          价格:2.99
        }
      ]
    },
    {
      主:
        {
          名:羊肉布瑞雅尼
          价格:4.5
        },
        {
          名:鸡南印度马萨拉
          价格:5.99
        }
      ]
    }
  ]
}

我通过内部菜单,然后循环每个阵列通过什么是每个嵌套数组中试图循环。

我是previously以此来输出数据之前,我改变了JSONObject的布局。

 < PHP的foreach($餐厅 - >菜单 - >起动器起动$){
               回声'<h3>'.$starter->name.'</h3><br><p>'.$starter->price.'</p><br>';           ?}&GT;


解决方案

试试下面code:

  $ JSON ='{
  名:外卖王
  菜单:[
    {
      启动器:
        {
          名:咖喱角,
          价格:3.5
        },
        {
          名:Chaat
          价格:1.99
        }
      ]
    },
    {
      甜点: [
        {
          名:Kulfi
          价格:2.5
        },
        {
          名:Kheer
          价格:2.99
        }
      ]
    },
    {
      主:
        {
          名:羊肉布瑞雅尼
          价格:4.5
        },
        {
          名:鸡南印度马萨拉
          价格:5.99
        }
      ]
    }
  ]
};呼应'&LT; pre&GT;';
$ json_arr = json_de code($ JSON,真正的);
//的print_r(call_user_func_array('array_merge',$ json_arr ['菜单']));回声的名字:。 $ json_arr ['名'];
呼应'&LT; BR /&GT;';
$ menu_array = call_user_func_array('array_merge',$ json_arr ['菜单']);
的foreach($ menu_array为$名=&GT; $ ARR){
    呼应'&LT; BR /&GT;';
    回声菜单名称:。 $名称;
    的foreach($改编为V $){
        呼应'&LT; BR /&GT;';
        回声$ V ['名']'。 '。$ V:['价格'];
    }
}

输出:

 名称:外卖国王
菜单名称:起动机
咖喱角:3.5
Chaat:1.99
菜单名称:甜点
Kulfi:2.5
Kheer:2.99
菜单名称:主
羊肉布瑞雅尼:4.5
烤鸡玛沙拉:5.99

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. Here is my 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.

<?php foreach($restaurant->menu->starter as $starter){
               echo '<h3>'.$starter->name.'</h3><br><p>'.$starter->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

这篇关于通过内部数组JSON数组循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆