使用PHP从简单的JSON数组创建多维数组

时间:2010-06-13 18:41:11

标签: php iphone mysql 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会起作用,看起来像“Transversing”可能是合适的,我想找出在它返回JASON之前放入Php的内容。

My 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.

提前致谢。

1 个答案:

答案 0 :(得分:1)

我不完全确定我明白你想做什么。我想你想把json数据变成php中的一个数组,然后重新调整它的内容以分散两个维度?

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
        )

)

希望这有帮助!