2013-06-29 75 views
1

早些時候,我曾經將結果集(一維)編碼爲json。現在,我需要創建一個基於多個表的多維json數據結構。我從來沒有這樣做,我需要一些幫助。基於mysql查詢創建多維json

我的表:

  • 用戶(1對多)
  • 手機(多爲1)
  • 地址(多爲1)
  • 名(多爲1)

我需要開發JSON響應,每行都有這樣的結構:

  • USER_ID:user_id說明
  • 電話:PHONE1,PHONE2,電話3等
  • 地址:地址1,地址,地址3等
  • 名稱:1,名稱2,名稱3等

我該怎麼做?例如,我想我可以爲每個表(手機,地址,名稱)創建3個查詢併爲每個表返回一個數據集,然後將每個結果集編碼爲json。現在我的問題:這是否是一個正確的方法呢?如何將每個子JSON添加到我的父JSON中?

$userJson = json_encode($user_id_resultSet); 
$phonesJson = json_encode($phones_resultSet); 
$addressesJson = json_encode($addresses_resultSet); 
$namesJson = json_encode($names_resultSet); 
//how do I combine them into one row? 
+1

它們合併您的數據編碼成JSON – Musa

+0

你談論相結合的結果集之前(做'array_merge')或建立某種形式的查詢返回一個結果集? – Andrew

回答

2
$combined = array(
    "user" => $user_id_resultSet, 
    "phones" => $phones_resultSet, 
    "addresses" => $addresses_resultSet, 
    "names" => $names_resultSet 
); 

echo json_encode($combined, JSON_PRETTY_PRINT); // just for neat output. 
+0

這真是太棒了。那麼在循環中對它進行處理呢?當我有多個用戶(所以應該有多行?) – Andrew

+0

@Andrew - 這只是基本的數組操作,給它一個去!嘗試一個空數組'$ users = array();'然後用'$ users [] = array(...);''添加新的東西。然後可以將'$ users'添加到發送給JSON編碼器的組合數組中。 – halfer