从数组中的数组中获取值

时间:2015-02-11 07:59:23

标签: php arrays multidimensional-array

我有一个多维数组,我希望从这个数组中提取每个值。 该数组存储在$ data。

{"success":true,"categories":
    [
        {"
            category_id":"C1",
            "parent_id":"P1",
            "name":"N1",
            "categories":
                [
                    {
                        "category_id":"C11",
                        "parent_id":"P11",
                        "name":"N11",
                    },
                    {
                        "category_id":"C12",
                        "parent_id":"P12",
                        "name":"N12",

                    },
                ],
            "status":"1"
        },

        {
            category_id":"C2",
            "parent_id":"P2",
            "name":"N2",
            "categories":
                [
                    {
                        "category_id":"C21",
                        "parent_id":"P21",
                        "name":"N21",
                            [
                                {
                                    "category_id":"C22",
                                    "parent_id":"P23",
                                    "name":"N24",
                                }
                            ],
                        "status":"2"
                    }
                ],
            "status":"3"
        },
    ]
}

我尝试使用

$total = $data['categories']['category_id'];

获取值C11

但是无法这样做。

任何人都可以告诉我如何获取所有数据,尤其是C22

3 个答案:

答案 0 :(得分:2)

您必须先使用json_decode

$array = json_decode($data, true);

然后您可以按照说明访问阵列。 或者循环分类:

if (!empty($array)) {
    foreach ($array['categories'] as $category) {
        echo $category['id'];
    }
}

您可能必须以递归方式执行此操作以遍历类别中的类别。但这完全取决于你想要达到的目标。如果嵌套循环总是只有一个深度,那么嵌套循环可以完成工作。

修改

你提供的JSON不太正确,我在下面给出了一个更正的:

{
"success": true,
"categories": [
    {
        "category_id": "C1",
        "parent_id": "P1",
        "name": "N1",
        "categories": [
            {
                "category_id": "C11",
                "parent_id": "P11",
                "name": "N11"
            },
            {
                "category_id": "C12",
                "parent_id": "P12",
                "name": "N12"
            }
        ],
        "status": "1"
    },
    {
        "category_id": "C2",
        "parent_id": "P2",
        "name": "N2",
        "categories": [
            {
                "category_id": "C21",
                "parent_id": "P21",
                "name": "N21",
                "categories": [
                    {
                        "category_id": "C22",
                        "parent_id": "P23",
                        "name": "N24"
                    }
                ],
                "status": "2"
            }
        ],
        "status": "3"
    }
]
}

有一些尾随逗号和缺少引号。

答案 1 :(得分:0)

数据不在PHP数组中,而是JSON数组。您必须使用json_decode()函数对其进行解码。

答案 2 :(得分:-1)

那是JSON,而不是php多维数组。您可以使用json_decode函数来读取它。