2017-02-09 21 views
1

たとえば、バスカテゴリのような特定の文字列のデータの配列を追加しようとしています。異なるブランドがあり、バスにはさまざまな機器があります。特定の文字列の配列内のJson応答配列

期待して出力

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

電流出力

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

Anant出力:

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

マイコード:

 $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']; 

       } 


      } 
     } 


    } 
+0

,,,これを試してみてください。また、必要な出力が有効なjsonでないことにも注意してください。もちろん、客観的に文字列にする必要がない限り。また、たとえば 'bus_name'で注文して現在のものを追跡する場合、ループ内で追加のクエリを実行する代わりに、1つのクエリしか必要としません。 – jeroen

+0

返信 – Shaik

+0

の最初のおかげで、私はhttp://jsonlint.com/でテストしました。リクエストされたアウトは、有効なjasonであり、最初はバス名とカテゴリIDを取得しています。 – Shaik

答えて

1

あなたは `$ K 'を必要としながら、あなたはあなたの主な配列のキーとして` bus_name`、 `category_id`、などのような文字列を使用している

$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']; 

      } 


     } 
    } 


} 
+0

あなたのコードに変更がありましたか? – Shaik

+0

ループ内で '$ response [$ k] ['objective']'を上書きしていれば、 '$ response [$ k] ['objective'] []'が必要です。 – jeroen

+0

私の目標は、すべてこのforeachのようイェルーン,, yesまたはmybe @ジェイソン – Shaik