Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php json格式中的问题_Php_Arrays_Json - Fatal编程技术网

php 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

我目前正忙于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[$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);添加了这个,但没有成功