本文介绍了通过内部数组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数组循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!