Search code examples
phparraysgeojson

Json response array inside array for specific string


I am trying to just add array for data in a specific string in a json response like for example in a bus category i have different brands and in bus i have different equipment.

expecting output

[{
    "category_id": "1",
    "bus_name": "Volvo1",
    "objective": "{'Baggage','seat','water'}"
}, {
    "category_id": "2",
    "bus_name": "BMW1",
    "objective": "{'test tire','call Driver','pick up time'}"
}]

current output

{
    "bus_name": ["Volvo1", "BMW1"],
    "category_id": ["1", "2"],
    "objective": ["test tire", "call Driver", "pick up time"]
}

Anant output:

{
    "bus_name": ["Volvo1", "BMW1"],
    "category_id": ["1", "2"],
    "0": {
        "objective": "Baggage,seat,water"
    },
    "1": {
        "objective": "test tire ,call Driver ,pick up time"
    }
}

My code:

        $response = array();
    $query="select DISTINCT bus_name,category_id from testtable";
    $num= $db->num_rows($query);
    if($num)
    {
        $rows = $db->get_results($query);

        $bus_name =array();

        foreach($rows as $k=>$row1) { 


            $bus_name =$row1['bus_name'];
            $response['bus_name'][$k]=$row1['bus_name'];
            $response['category_id'][$k]=$row1['category_id'];
            $query="select * from testtable where bus_name='$bus_name'";
            $num= $db->num_rows($query);
            if($num)
            {
                $rows = $db->get_results($query);
                foreach($rows as $k=>$row1)
                { 

                    $response['objective'][$k] =$row1['objective'];

                }


            }
        }


    }

Solution

  • try this,,,

    $response = array();
        $query="select DISTINCT bus_name,category_id from testtable";
        $num= $db->num_rows($query);
        if($num)
        {
            $rows = $db->get_results($query);
    
        $bus_name =array();
    
        foreach($rows as $k=>$row1) { 
    
    
            $bus_name =$row1['bus_name'];
            $response[$k]['bus_name']=$row1['bus_name'];
            $response[$k]['category_id']=$row1['category_id'];
            $query="select * from testtable where bus_name='$bus_name'";
            $num= $db->num_rows($query);
            if($num)
            {
                $rows = $db->get_results($query);
                foreach($rows as $k=>$row1)
                { 
    
                    $response[$k]['objective'] =$row1['objective'];
    
                }
    
    
            }
        }
    
    
    }