PHP将多维数组分割成较小的数组

时间:2018-10-02 14:40:58

标签: php arrays json

我试图做的是创建一个转换该数组的函数

{
    "data": {
        "churnStructured": [
            {
                "id_region": "4",
                "iso": "be",
                "mcc": "206",
                "country": "Belgium",
                "carriers": [
                    {
                        "carrier": "Triton PCS",
                        "id_carrier": 68,
                        "brands": []
                    },
                    {
                        "carrier": "Beeline",
                        "id_carrier": 80,
                        "brands": []
                    }
                ]
            },
            {
                "id_region": "4",
                "iso": "bg",
                "mcc": "284",
                "country": "Bulgaria",
                "carriers": [
                    {
                        "carrier": "Comium",
                        "id_carrier": 75,
                        "brands": []
                    }
                ]
            }
        ]
    }
}

分成较小的数组,如下所示:

{[
    "first_array" : [{
        "id_region": "4",
            "iso": "be",
            "mcc": "206",
            "country": "Belgium",
            "carriers": [
                {
                    "carrier": "Triton PCS",
                    "id_carrier": 68,
                    "brands": []
                },
                {
                    "carrier": "Beeline",
                    "id_carrier": 80,
                    "brands": []
                }
            ]
    ]},
    "second_array": [{
        "id_region": "4",
        "iso": "bg",
        "mcc": "284",
        "country": "Bulgaria",
        "carriers": [{
                "carrier": "Comium",
                "id_carrier": 75,
                "brands": []
                }]
    }],
    "third_array": [{}],
    "n_array": [{}]
]}

如您所见,新数组的第一个分支是其国家/地区,其子代的结构相同。

我当时正在考虑做一个递归函数,该函数获取每个值并使用键进行验证,但是,我不知道如何进行适当的迭代以及如何将每个国家作为带有各自子代的新数组。

而且数组是动态的,它可以接收n个对象的数组

1 个答案:

答案 0 :(得分:1)

使用数字数组,而不要使用first_array等。这应该可以解决问题:

$data = json_decode($json, true);
$data = $data['data']['churnStructured'];

$results = [];
foreach ($data as $row) {
    $results[] = $y;
}

var_dump($results);

您可以在这里看到实际效果! https://3v4l.org/V6VoO