2010-06-13 149 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