doucong8553 2016-08-25 04:57
浏览 142
已采纳

如何以格式打印json数组数据

Let me explain what i want. I have a two table name : grocery_product and grocery_attribute: grocery_product fields are

   id
   pname
   categoryid
   subcatid

grocery_attribute fields are

    id
    product_id
    price
    discount

PHP CODE : This is my code for API

    case "product_lists":
    $query = "select grocery_product.id as pid,grocery_product.pname,grocery_product.categoryid,grocery_product.subcatid,grocery_attribute.id as atribid,   grocery_attribute.product_id,grocery_attribute.price,grocery_attribute.discount,from grocery_product 
    right join grocery_attribute on grocery_attribute.product_id = grocery_product.id order by pid asc" ;  
    $result =  $link->query($query) or die('Errant query:  '.$query);   
    $FetchArray = array();
    $num_rows = $result->num_rows; 
    if($result->num_rows > 0){ 
        while($row = $result->fetch_assoc()){
            $newData['id'] = $row['pid']; // PID as product ID
            $newData['pname'] = $row['pname'];
            $newData['categoryid'] = $row['categoryid'];
            $newData['subcatid'] = $row['subcatid'];  
            $newData['attrib_id'] = $row['atribid'];
            $newData['product_id'] = $row['product_id'];
            $newData['price'] = $row['price'];
            $newData['discount'] = $row['discount'];
            array_push($FetchArray,$newData);
        }

          $grocerryArray=array();
          foreach($FetchArray as $detail){

            $grocerryArray[$detail['id']]['id']=$detail['id'];
            $grocerryArray[$detail['id']]['pname']=$detail['pname'];
            $grocerryArray[$detail['id']]['categoryid']=$detail['categoryid'];
            $grocerryArray[$detail['id']]['subcatid']=$detail['subcatid'];
                                        // Get all grocerry_attribute data where grocery_attribute.product_id = grocery_product.id
                                        $grocerryArray[$detail['id']]['details'][]=array(
                                            'attrib_id'=>$detail['attrib_id'], // attrib_id is grocery_attribute_id
                                            'product_id'=>$detail['product_id'],
                                            'price'=>$detail['price'],
                                            'discount'=>$detail['discount']
                                        );
            }
        header('Content-type: application/json');
        echo json_encode(array('Status'=>'Success', 'data'=>$grocerryArray, 'message'=>'You have successfully retrieved data'));break;

Current Output is

   {
"Status":"Success",
"data":{
        "1":
        {   
            "id":"1",
            "pname":"Royal Moong Dal Moong Dal",
            "categoryid":"4",
            "subcatid":"3",
                "details":[
                            {"attrib_id":"1","product_id":"1","price":"500","discount":"15"},
                            {"attrib_id":"2","product_id":"1","price":"800","discount":"10"},
                            {"attrib_id":"3","product_id":"1","price":"1100","discount":"20"}
                        ]
        },

        "2":
            {
                "id":"2",
                "pname":"Royal Toor Dal/Arhar Dal / Tuver Dal",
                "categoryid":"4",
                "subcatid":"3",
                    "details":[
                            {"attrib_id":"4","product_id":"2","price":"500","discount":"10"},
                            {"attrib_id":"5","product_id":"2","price":"50","discount":"10"}
                        ]
            }
    },
    "message":"You have successfully retrieved data"
     }

What I am looking for

[
{
    "status":"success",
    "data":[
        {
            "id":"1",
            "pname":"Royal Moong Dal Moong Dal",
            "categoryid":"4",
            "subcatid":"3",
            "details":[
                    {"attrib_id":"1","product_id":"1","price":"500","discount":"15"},
                    {"attrib_id":"2","product_id":"1","price":"800","discount":"10"},
                    {"attrib_id":"3","product_id":"1","price":"1100","discount":"20"}
                ]
        }

        {
        "id":"2",
        "pname":"Royal Toor Dal\/Arhar Dal\/Tuver Dal",
        "categoryid":"4",
        "subcatid":"3",
            "details":[
                    {"attrib_id":"4","product_id":"2","price":"500","discount":"10"},
                    {"attrib_id":"5","product_id":"2","price":"50","discount":"10"}
                ]
        }


        ],
        "message":"You have successfully retrieved data"
}
]
  • 写回答

2条回答 默认 最新

  • drgawfsf1069 2016-08-25 05:11
    关注

    Please replace with below code . array_values that will be reset index of array.

    case "product_lists":
        $query = "select grocery_product.id as pid,grocery_product.pname,grocery_product.categoryid,grocery_product.subcatid,grocery_attribute.id as atribid,   grocery_attribute.product_id,grocery_attribute.price,grocery_attribute.discount,from grocery_product 
        right join grocery_attribute on grocery_attribute.product_id = grocery_product.id order by pid asc" ;  
        $result =  $link->query($query) or die('Errant query:  '.$query);   
        $FetchArray = array();
        $num_rows = $result->num_rows; 
        if($result->num_rows > 0){ 
            while($row = $result->fetch_assoc()){
                $newData['id'] = $row['pid']; // PID as product ID
                $newData['pname'] = $row['pname'];
                $newData['categoryid'] = $row['categoryid'];
                $newData['subcatid'] = $row['subcatid'];  
                $newData['attrib_id'] = $row['atribid'];
                $newData['product_id'] = $row['product_id'];
                $newData['price'] = $row['price'];
                $newData['discount'] = $row['discount'];
                array_push($FetchArray,$newData);
            }
    
              $grocerryArray=array();
              foreach($FetchArray as $detail){
    
                $grocerryArray[$detail['id']]['id']=$detail['id'];
                $grocerryArray[$detail['id']]['pname']=$detail['pname'];
                $grocerryArray[$detail['id']]['categoryid']=$detail['categoryid'];
                $grocerryArray[$detail['id']]['subcatid']=$detail['subcatid'];
                                            // Get all grocerry_attribute data where grocery_attribute.product_id = grocery_product.id
                                            $grocerryArray[$detail['id']]['details'][]=array(
                                                'attrib_id'=>$detail['attrib_id'], // attrib_id is grocery_attribute_id
                                                'product_id'=>$detail['product_id'],
                                                'price'=>$detail['price'],
                                                'discount'=>$detail['discount']
                                            );
                }
            header('Content-type: application/json');
            echo json_encode(array('Status'=>'Success', 'data'=>array_values($grocerryArray), 'message'=>'You have successfully retrieved data'));break;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog