php json格式中的问题
我目前正忙于php的json格式。我在下面给出了输出的json。我需要做的是将当前json的格式设置为所需的格式。我缺少JSON格式的数组。有人能帮我吗 我打印json输出的代码如下:php json格式中的问题,php,arrays,json,Php,Arrays,Json,我目前正忙于php的json格式。我在下面给出了输出的json。我需要做的是将当前json的格式设置为所需的格式。我缺少JSON格式的数组。有人能帮我吗 我打印json输出的代码如下: $menuHead=array(); $i=0; foreach($res as $key => $value){ $i=$key+1; //$menuHead[$i]['menuHead']=$value['category']; if(isset($menuHead[$ke
$menuHead=array();
$i=0;
foreach($res as $key => $value){
$i=$key+1;
//$menuHead[$i]['menuHead']=$value['category'];
if(isset($menuHead[$key]['menuHead'])){
if($menuHead[$key]['menuHead']==$value['category']){
$menuHead[$key]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$key]['data'][$i]['price']=$value['price'];
$menuHead[$key]['data'][$i]['description']=$value['description'];
$menuHead[$key]['data'][$i]['itemId']=$value['id'];
$menuHead[$key]['data'][$i]['customizable']=$value['customizable'];
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}
$final['MenuList']=$menuHead;
echo json_encode($final);
当前格式:
{
"MenuList": {
"1": {
"menuHead": "Main Course",
"data": {
"1": {
"itemName": "Chicken Thai Curry",
"price": "599",
"description": "",
"itemId": "67",
"customizable": "1"
}
}
},
"2": {
"menuHead": "Refreshments",
"data": {
"2": {
"itemName": "Kingfisher Premium",
"price": "999",
"description": "Kingfisher beer",
"itemId": "69",
"customizable": "1"
},
"3": {
"itemName": "Mocktail",
"price": "999",
"description": "",
"itemId": "68",
"customizable": "1"
}
}
},
"4": {
"menuHead": "Rice biriyani",
"data": {
"4": {
"itemName": "Dal makni risotto",
"price": "499",
"description": "Dal makhni risotto",
"itemId": "66",
"customizable": "1"
}
}
}
}
}
所需格式:
{
"menuList": [
{
"menuHead": "In Steamer (Momos)",
"data": [
{
"itemName": "Tandoori Momo",
"description": "",
"price": "150",
"itemId": "16",
"customizable": "0"
},
{
"itemName": "Fried Momo Pork",
"price": "100",
"description": "",
"itemId": "15",
"customizable": "0"
}
]
},
{
"itemName": "Rice and Noodles",
"data": [
{
"sub_category": "Tandoori Momo",
"description": "",
"price": "150",
"itemId": "16",
"customizable": "0"
},
{
"itemName": "Fried Momo Pork",
"price": "100",
"description": "",
"itemId": "15",
"customizable": "0"
}
]
}
]
}
原始答复如下:
$menuHead=array();
$i=0;
foreach($res as $key => $value){
$i=$key+1;
//$menuHead[$i]['menuHead']=$value['category'];
if(isset($menuHead[$key]['menuHead'])){
if($menuHead[$key]['menuHead']==$value['category']){
$menuHead[$key]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$key]['data'][$i]['price']=$value['price'];
$menuHead[$key]['data'][$i]['description']=$value['description'];
$menuHead[$key]['data'][$i]['itemId']=$value['id'];
$menuHead[$key]['data'][$i]['customizable']=$value['customizable'];
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}
$final['MenuList']=$menuHead;
echo json_encode($final);
数组(4){[0]=>数组(7){[“id”]=>字符串(2)“67”[“餐厅id”]=>字符串(1)“5”[“类别”]=>字符串(11)“主菜”[“子类别”]=>字符串(18)“泰国咖喱鸡”[“价格”]=>字符串(3)“599”[“说明”]=>字符串(0)”“[“可定制”=>字符串(1)”字符串(1]=>数组(7“[“id”=>字符串(2)“69”[“餐厅id”=>字符串(1)”[“类别”]=>string(12)“茶点”[“子类别”]=>string(18)“翠鸟特优”[“价格”=>string(3)”999“[“说明”=>string(15)“翠鸟啤酒”[“可定制”]=>string(1)”1”}[2]=>array(7){[“id”=>string(2)”68”[“餐厅id”=>string(1)”5”[“类别”=>string(12)“茶点”[“子类别”=>string(8)“Mocktail”[“price”]=>string(3)“999”[“description”]=>string(0)”“[“定制”]=>string(1)“1”}[3]=>array(7){“id”=>string(2)“66”[“restaurant_id”]=>string(1)“5”[“category”]=>string(13)“米饭”biriyani”[“亚类”=>string(17)“Dal makni意式饭”[“price”=>string(3)”499”[“description”=>string(18)“Dal Maki意式饭”“[“可自定义”]=>string(1)“1”}问题是,当您添加
数据
项时,您需要添加它们而不使用特定键,就像在中使用$i
添加它们一样
$menuHead[$key]['data'][$i]['itemName']=$value['sub_category'];
这将使它们不再是您想要的普通数组。对于json\u encode()
数组必须从0开始,并按顺序排列才能成为数组
而是一次创建它们,并使用[]
将它们添加到现有数据的末尾
$menuHead[$key]['data'][] = ['itemName' =>$value['sub_category'],
'price'=> $value['price'],
'description'=>$value['description'],
'itemId'=>$value['id'],
'customizable'=>$value['customizable']];
这需要使用每一组类似的代码来完成,其中包括整个数组本身,这可以使用
$final['MenuList'] = array_values($menuHead);
尝试并修复您已经拥有的数据,这意味着除了添加以下代码之外没有任何更改
foreach ( $menuHead as $menu ) {
$menu['data'] = array_values($menu['data']);
}
$final['MenuList'] = array_values($menuHead);
问题是,当您添加
数据
项时,您需要添加它们,而无需使用特定键,就像在中使用$i
添加它们一样
$menuHead[$key]['data'][$i]['itemName']=$value['sub_category'];
这将使它们不再是您想要的普通数组。对于json\u encode()
数组必须从0开始,并按顺序排列才能成为数组
而是一次创建它们,并使用[]
将它们添加到现有数据的末尾
$menuHead[$key]['data'][] = ['itemName' =>$value['sub_category'],
'price'=> $value['price'],
'description'=>$value['description'],
'itemId'=>$value['id'],
'customizable'=>$value['customizable']];
这需要使用每一组类似的代码来完成,其中包括整个数组本身,这可以使用
$final['MenuList'] = array_values($menuHead);
尝试并修复您已经拥有的数据,这意味着除了添加以下代码之外没有任何更改
foreach ( $menuHead as $menu ) {
$menu['data'] = array_values($menu['data']);
}
$final['MenuList'] = array_values($menuHead);
如果您想要与javascript兼容的数组,索引必须从0开始。最简单的方法是使用:
如果您想要与javascript兼容的数组,索引必须从0开始。最简单的方法是使用: 使用数组_值() 我修正了你的代码,应该能用
$menuHead=array();
$i=0;
foreach($res as $key => $value){
$i=$key+1;
//$menuHead[$i]['menuHead']=$value['category'];
if(isset($menuHead[$key]['menuHead'])){
if($menuHead[$key]['menuHead']==$value['category']){
$menuHead[$key]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$key]['data'][$i]['price']=$value['price'];
$menuHead[$key]['data'][$i]['description']=$value['description'];
$menuHead[$key]['data'][$i]['itemId']=$value['id'];
$menuHead[$key]['data'][$i]['customizable']=$value['customizable'];
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}
// i'am use array_values()
$final['MenuList']= array_values($menuHead);
echo json_encode($final);
使用数组_值()
我修正了你的代码,应该能用
$menuHead=array();
$i=0;
foreach($res as $key => $value){
$i=$key+1;
//$menuHead[$i]['menuHead']=$value['category'];
if(isset($menuHead[$key]['menuHead'])){
if($menuHead[$key]['menuHead']==$value['category']){
$menuHead[$key]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$key]['data'][$i]['price']=$value['price'];
$menuHead[$key]['data'][$i]['description']=$value['description'];
$menuHead[$key]['data'][$i]['itemId']=$value['id'];
$menuHead[$key]['data'][$i]['customizable']=$value['customizable'];
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}else{
$menuHead[$i]['menuHead']=$value['category'];
$menuHead[$i]['data'][$i]['itemName']=$value['sub_category'];
$menuHead[$i]['data'][$i]['price']=$value['price'];
$menuHead[$i]['data'][$i]['description']=$value['description'];
$menuHead[$i]['data'][$i]['itemId']=$value['id'];
$menuHead[$i]['data'][$i]['customizable']=$value['customizable'];
}
}
// i'am use array_values()
$final['MenuList']= array_values($menuHead);
echo json_encode($final);
数组从0开始!数组从0开始!您的代码在menulist中添加了我的代码缺失的数组,但数据对象也必须是数组。请在此$final['menulist']=(object)array\u值($menuHead)上提供帮助($menuHead)不起作用。数据json对象也必须是此数组。$final['menulist'][=array\u值($menuHead);您的代码在menulist中添加了我的代码缺失的数组,但数据对象也必须是数组。请在此$final['menulist']=(object)array_values($menuHead)上提供帮助。不,它不起作用。数据json对象也必须是arrayTry。此$final['menulist'][=array_values($menuHead);此解决方案不起作用。还有其他方法吗?我在答案底部添加了一种新方法,该方法应与您的原始代码一起使用。是的,我在3个位置更改了它。您可能需要
$menuHead as&$menu
以允许它更新原始数据,看看是否有帮助。foreach($menuHead as$menu){$menu['data']=数组_值($menu['data']);}$final['MenuList']=数组_值($menuHead);添加了此选项,但它不起作用此解决方案不起作用。还有其他方法吗?我在答案底部添加了一种新方法,该方法应与您的原始代码一起使用。是的,我在3个位置更改了它。您可能需要$menuHead as&$menu
来允许它更新原始数据,看看是否有帮助。foreach($menuHead as$menu){$menu['data']=array_values($menu['data']);}$final['MenuList']=array_values($menuHead);添加了这个,但没有成功