2013-11-28 126 views
0

创建多维JSON我有一个PostgreSQL数据库的表信息,如:从select语句

COLUMN_ID COLUMN_TITLE     OPTION_ID   OPTION_DESC 
SZ   SIZE   S   Small 
SZ   SIZE   M   Medium 
SZ   SIZE   L   Large 
CL   COLOR   GR   Green 
CL   COLOR   WH   White 
CL   COLOR   BK   Black 

我想创建一个JSON,如:

[{ 
    "COLUMN_ID": "SZ", 
    "COLUMN_TITLE": "SIZE", 
    "OPTIONS": [{ 
     "OPTION_ID": "S", 
     "OPTION_DESC": "Small" 
    }, { 
     "OPTION_ID": "M", 
     "OPTION_DESC": "Medium" 
    }, { 
     "OPTION_ID": "L", 
     "OPTION_DESC": "Large" 
    }] 
}, { 
    "COLUMN_ID": "CL", 
    "COLUMN_TITLE": "COLOR", 
    "OPTIONS": [{ 
     "OPTION_ID": "GR", 
     "OPTION_DESC": "Green" 
    }, { 
     "OPTION_ID": "WH", 
     "OPTION_DESC": "White" 
    }, { 
     "OPTION_ID": "BK", 
     "OPTION_DESC": "Black" 
    }] 
}] 

有没有做一个切实可行的办法这在PHP中?

+3

是的。将数据存储在数组中,然后应用'json_encode' – kero

回答

0

这是我找到的药水。它的工作原理

$result = pg_query($dbconn,$stmt) 
      or die("Error: " . pg_last_error()); 

    $name_temp = '$$##'; 

    while ($row = pg_fetch_assoc($result)) { 

      $name = $row['COLUMN_NAME']; 
      $title = $row['COLUMN_TITLE']; 

     if ($name != $name_temp and $name_temp != '$$##') { 
      $arr[] = array('COLUMN_NAME' => $name_temp, 'COLUMN_TITLE' => $title_temp, 'OPTIONS' => $options); 
      $options = ''; 

     } 

     $options[] = array('OPTION_ID' => $row['OPTION_ID'], 'OPTION_DESC' => $row['OPTION_DESC']); 
      $name_temp = $name; 
      $title_temp = $title; 

    } 
      $arr[] = array('COLUMN_NAME' => $name_temp, 'COLUMN_TITLE' => $title_temp, 'OPTIONS' => $options); 
echo json_encode($arr);