2010-06-13 145 views
1

我有一個PHP查詢從表中返回以下JSON格式。使用PHP從簡單的JSON數組創建多維數組

[{"memberid":"18", 
"useridFK":"30", 
"loginName":"Johnson", 
"name":"Frank", 
"age":"23", 
"place":"School", 
}, 

它需要的格式如下:

[{"memberid":"18" { 
        "useridFK":"30", 
        "loginName":"Johnson", 
        "name":"Frank", 
        "age":"23", 
        "place":"School",} 
        }, 

我在另一個問題告訴PHP會工作,它看起來像「橫移」可能是合適的,我期待找出什麼在返回JASON之前放入Php。

我Array.plist將如下所示:

Root:     Dictionary 
     V Rows:   Array 
     V Item 0:  Dictionary 
      Title:  String   18 
      V Children  Array 
      V Item 0  Dictionary 
       Title  String   30 
    etc. 

在此先感謝。

+0

「需要以下格式:」中的所需格式無效。重釋。 – mario 2010-06-13 19:04:18

回答

1

我不完全確定我明白你想要做什麼。我想你想在PHP中將json數據轉換爲數組,然後重新確定它的內容以傳播兩個維度?

Php帶有兩個非常漂亮的函數,稱爲「json_decode」和「json_encode」,它將允許您解碼和編碼json數據。 You can read more about them here.

關於「json_decode」的注意事項。除非您將輔助參數作爲TRUE傳遞給函數,否則它將返回一個對象,而不是多維數組。

例子:

<?php 

    $strJsonData = '[ 
     {"memberid":"18", 
     "useridFK":"30", 
     "loginName":"Johnson", 
     "name":"Frank", 
     "age":"23", 
     "place":"School"}, 

     {"memberid":"19", 
     "useridFK":"36", 
     "loginName":"Jones", 
     "name":"Bill", 
     "age":"34", 
     "place":"Work"} 
    ]'; 

    $arrRawJsonData = json_decode($strJsonData, true); 
    # Now $arrRawJsonData contains a two-dimentional array of all your json data. 

    $intJsonDataCount = count($arrRawJsonData); 

    for ($i = 0; $i < $intJsonDataCount; $i++) 
    { 
     $intMemberId = (int) ($arrRawJsonData[$i]['memberid']); 
     unset($arrRawJsonData[$i]['memberid']); 
     $arrJsonData[$intMemberId] = $arrRawJsonData[$i]; 
    } 

    print_r($arrJsonData); 

?> 

上面的代碼將導致以下:

Array 
(
    [18] => Array 
     (
      [useridFK] => 30 
      [loginName] => Johnson 
      [name] => Frank 
      [age] => 23 
      [place] => School 
     ) 

    [19] => Array 
     (
      [useridFK] => 36 
      [loginName] => Jones 
      [name] => Bill 
      [age] => 34 
      [place] => Work 
     ) 

) 

希望這有助於!

+0

感謝您的時間。 – 2010-06-20 13:25:50