Php array com matriz não consigo criar

Estou tentando obter dois valores de matriz dentro de uma matriz. Eu tenho duas situações, uma está pronta e outra não está concluída. Dentro de uma matriz, posso obter uma única matriz, mas não conseguir múltiplos, como mencionado na saída esperada abaixo.

[{"id":"3","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"},{"id":"4","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"}] 

código com consulta feita e não codificada

 $response = array(); $response2 = array(); if(isset($_REQUEST['action']) && $_REQUEST['action']=='test') { $query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='done'"; $num= $db->num_rows($query); if($num) { $rows = $db->get_results($query); foreach($rows as $k=>$row1) { $response[$k]['id'] = $row1['id']; $response[$k]['category'] = $row1['category']; $response[$k]['text'] = $row1['text']; $response[$k]['image'] = $row1['image']; } } else{ $response['message']='No user Found'; $response['status']='fail'; } $query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='notdone'"; $num= $db->num_rows($query); if($num) { $rows = $db->get_results($query); foreach($rows as $k=>$row1) { $response[$k]['id'] = $row1['id']; $response[$k]['category'] = $row1['category']; $response[$k]['text'] = $row1['text']; $response[$k]['image'] = $row1['image']; } } else { $response['message']='No user Found'; $response['status']='fail'; } echo json_encode($response); echo json_encode($response2); } } 

esperando saída

  [{Done:{{"id":"3","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"},{"id":"4","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"} }, Notdone:{{"id":"3","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"},{"id":"4","category":"Name","text":"text with some data","image":"http:\/\/examole.net\/folder\/images\/category1.jpg"} }}] 

Você pode fazer isso de duas maneiras

1.

Deixe tudo como está e mova o echo logo após o código de processamento sql / array:

 //... [...] ... } else{ $response['message']='No user Found'; $response['status']='fail'; } echo json_encode($response); //<---- here for the first $query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='notdone'"; $num= $db->num_rows($query); //....... 

e

 //... [...] ... } else{ $response['message']='No user Found'; $response['status']='fail'; } echo json_encode($response); //<---- here for the second //....... 

2

altere as variables ​​relativas dentro da pesquisa após sua SEGUNDA consulta

 // this remains the same from here $query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='done'"; $num= $db->num_rows($query); if($num) { $rows = $db->get_results($query); foreach($rows as $k=>$row1) { $response[$k]['id'] = $row1['id']; $response[$k]['category'] = $row1['category']; $response[$k]['text'] = $row1['text']; $response[$k]['image'] = $row1['image']; } } else{ $response['message']='No user Found'; $response['status']='fail'; } // ----------------- to here // and here .... $query="select * from exampledb where id='".$db->escape($_REQUEST['id'])."' and workdone='notdone'"; $num= $db->num_rows($query); if($num) { $rows = $db->get_results($query); foreach($rows as $k=>$row1) { //... change this with $response2 $response2[$k]['id'] = $row1['id']; $response2[$k]['category'] = $row1['category']; $response2[$k]['text'] = $row1['text']; $response2[$k]['image'] = $row1['image']; } } else{ //... and this $response2['message']='No user Found'; $response2['status']='fail'; } // echo json_encode($response); echo json_encode($response2); 

Se você não preencher $response2 você nunca chegar ao final por json_encode