【问题标题】:Nested arrays in JSONJSON中的嵌套数组
【发布时间】:2013-07-28 02:21:53
【问题描述】:

有人可以向我解释如何制作一个包含数组内嵌套数组的 json 吗?

假设我有两个表,第一个是“group”,第二个是“students”,我想做一个这样的json:

[
group: "X"
{
    {
        id: "1",
        name: "Student z",
    },
    {
        id: "2",
        name: "Student b",
    }
},
group: "N"
{
    {
        id: "3",
        name: "Student c",
    },
    {
        id: "4",
        name: "Student a",
    }
} ]

我一直都是做简单的json,这里根本不分组,但这次不一样。

此外,组是动态的,它们没有被定义并且可能随着时间而改变。

我知道这是一个愚蠢的问题,但我希望有人能帮助我。

【问题讨论】:

  • 只是一个评论,你知道你可以使用json_encode()轻松地将PHP数组转换为json,对吧?所以如果你了解 PHP 数组,你可以在 PHP 中制作并转换为 json。
  • 是的,我知道并使用过。但是我对数组分组感到困惑,我的意思是:如何循环对数据进行分组(while、for、foreach)?

标签: php mysql json multidimensional-array


【解决方案1】:

让我们从一个对象结构开始,其中组名是键,如下所示:

{X: details-about-X, N: details-about-N}

对于每个组,我们需要一个学生列表 - 所以每个组都需要包含一个数组:

{
    X: [item1, item2],
    N: [item1, item2]
}

或者换一种写法,

{
    X: [
        item1,
        item2
    ],
    N: [
        item1,
        item2
    ]
}

并且数组中的每个项目都是一个学生,有一个名字和一个 id - 所以一个学生对象:

{
    id: 1,
    name: "Student z"
}

将其作为数组项插入到原始结构中,我们得到:

{
    X: [
        {
            id: 1,
            name: "Student z"
        },
        {
            id: 2,
            name: "Student b"
        }
    ],
    N: [
        {
            id: 3,
            name: "Student c"
        },
        {
            id: 4,
            name: "Student a"
        }
    ]
}

如果将此结构保存到 javascript 变量 groups,您将能够访问 N 组中的学生列表:

groups.N

..N组第一个学生的详细信息为:

groups.N[0]

...N组第一个学生的名字为:

groups.N[0].name

另一种方法是从一个数组组开始,然后构建一个类似这样的结构:

groups = [
    {
        group: 'X',
        students: [list-of-students, same-as-above]
    }
    {
        group: 'N',
        students: [list-of-students, same-as-above]
    }
];

在这种情况下,您可以通过以下方式找到您的第一个组的名称:

groups[0].name

第一组中第一个学生的名字是:

groups[0].students[0].name

【讨论】:

    【解决方案2】:

    我不确定问题是什么,但这样的对象会是这样的:

    { 
       X : [
       {
          id: "1",
          name: "Student z",
       },
       {
          id: "2",
          name: "Student b",
       }
       ], N : [
    
       {
          id: "3",
          name: "Student c",
       },
       {
          id: "4",
          name: "Student a",
       }
       ]
    }
    

    这是你想要的吗?

    【讨论】:

    • 我的问题是,如何循环对数据进行分组(while、for、foreach)?我愿意: $query=mysql_query("select * from students"); $i=0; while ($row = mysql_fetch_array($query)) { $json[$i]['name']=$row["studentName"]; $i++; } 回声 json_encode($json);有了这个我做json。但这只是一个简单的json,我还不清楚如何制作嵌套的json(比如你的例子)。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2019-12-05
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多