PHP嵌套复制到自己的对象中

时间:2018-01-11 10:42:37

标签: php arrays json object

以下输出是MySQL查询的结果。一些公司有多个位置和位置编号。而不是创建一个新的"公司"每次我希望该公司的所有位置都嵌套在第一个公司阵列下时。

因此,实质上公司阵列下会有另一个包含另一个位置/编号的对象。

我的大脑让我失望。有人在乎帮忙吗?

<?php

$json = '[
{
    "Company 1": [
        {
            "location": "Location Name 1",
            "number": "0001"
        }
    ]
},
{
    "Company 1": [
        {
            "location": "Location Name 2",
            "number": "00045"
        }
    ]
},
{
    "Company 2": [
        {
            "location": "Location Name 1",
            "number": "00021"
        }
    ]
}
]';

$x = json_decode($json);
var_dump($x)
?>

2 个答案:

答案 0 :(得分:2)

您可以通过迭代数组并将数据存储在新数组中来实现:

$x = json_decode($json, true);
$x2 = array();
foreach($x as $k => $v)
{
    foreach($v as $k2 => $v2)
    {
        $x2[$k2][] = $v2[0];
    }
}
print_r($x2);

结果将是:

Array
(
    [Company 1] => Array
        (
            [0] => Array
                (
                    [location] => Location Name 1
                    [number] => 0001
                )

            [1] => Array
                (
                    [location] => Location Name 2
                    [number] => 00045
                )

        )

    [Company 2] => Array
        (
            [0] => Array
                (
                    [location] => Location Name 1
                    [number] => 00021
                )

        )

)

答案 1 :(得分:1)

您可以使用array_merge_recursive函数执行一行:

$arr = array_merge_recursive(...json_decode($json, True));

eachSeries()