2011-09-13 4 views
0

mysql 쿼리에서 JSON 객체를 빌드하려고합니다. 나는을 위해 노력하고있어 JSON 구조는 다음과 같아야합니다PHP 배열에서 JSON

{ 
     "a": [ 
      { 
       "user": "alb", 
       "time": "2011-09-12 05:56:36" 
      }, 
      { 
       "user": "arg", 
       "time": "2011-09-12 05:56:36" 
      } 
      ] 
     "b": [ 
      { 
       "user": "blah", 
       "time": "2011-09-12 05:56:36" 
      }, 
      { 
       "user": "bleh", 
       "time": "2011-09-12 05:56:36" 
      } 
      ] 
} 

그러나, 내 코드는 항상 같은 배열에 싸여 JSON 개체를 반환 : 여기

[ 
     { 
      "a": [ 
       { 
        "user": "alb", 
        "time": "2011-09-12 05:56:36" 
       }, 
       { 
        "user": "arg", 
        "time": "2011-09-12 05:56:36" 
       } 
       ] 
      "b": [ 
       { 
        "user": "blah", 
        "time": "2011-09-12 05:56:36" 
       }, 
       { 
        "user": "bleh", 
        "time": "2011-09-12 05:56:36" 
       } 
       ] 
    } 
] 

는 PHP 코드 I입니다 'm using :

<?php 
$json_data = array(); 
foreach($blogs as $blog) 
{ 
    $sql = "SELECT * from users"; 
    $query = mysql_query($sql); 
    $ablog = array(); 
    while ($row = mysql_fetch_assoc($query)) 
    { 
     $json_element = array(
     "user"=> $row[username] , 
     "time"=> $row[time] 
     ); 
     array_push($ablog,$json_element); 
    } 
    $eblog = array($blog => $ablog); 
    array_push($json_data,$eblog); 

} 
$json_output = json_encode($json_data); 
print $json_output; 
?> 

궁금한 점은 왜 배열에 포장 된 JSON 객체가 생겼는지 궁금한가요? 위의 코드에서 내가 뭘 잘못하고 있나?

감사합니다.

+1

모두 JSON은 ** "B"전에 쉼표를 추가 할 필요가 유효하지 않습니다 ** – Gowri

+0

당신은 당신의 프로그램의 * 실제 * 출력을 게시해야 – meagar

답변

4

다음 두 줄은 하나의 요소 연관 배열을 생성하고 더 큰 $json_data 배열에 하나의 요소의 배열을 추가됩니다

$eblog = array($blog => $ablog); 
array_push($json_data,$eblog); 

는 대신, 그냥 원래 배열에 새 키/값 쌍을 추가 :

$json_data[$blog] = $ablog;