PHP foreach 遍历数组时如何保留键名?

3
我有一个JSON文件,其结构如下所示(非常简化):
    [
      {
        "customerId": "M12345",
        "houses": [
          {
             "id": "OBJ12345_1731321200",
             "status": {
               "id": "4",
              "name": "Sold"
            },
           {
            "id": "OBJ12345_1732393235",
            "status": {
              "id": "4",
              "name": "Såld"
            }
          ],
         "plots": [
          {
            "id": "OBJ12345_1771637082",
            "status": {
              "id": "4",
              "name": "Sold"
            }
           ],
        "projects": [],
        "farms": [],
        "commercialPropertys": [],
        "condominiums": [],
        "foreignProperties": [],
        "premises": []
       }
    ]

我做了这个来获取所有对象的数组,但不知道如何保留"houses"或"plots"的键?

    // Create array of all objects  
      $AllEstatesList = array();
        foreach ($GetEstateList[0] as $GetEstateType) { 
            foreach ($GetEstateType as $GetEstate) { 
                if ($GetEstate["id"] != null) {
                    $AllEstatesList[] = $GetEstate;
                }
            }
        }

我需要找出如何创建一个数组,它保留父级的键并将其包含在新数组中...

我要寻找的结果是这样的:

    Array
        (
            [0] => Array
                (
                    [type] => houses
                    [id] => OBJ12345_1731321200
                    [status] => Array
                        (
                            [id] => 4
                            [name] => Såld
                        )

        
                )

            [1] => Array
                (
                    [type] => houses
                    [id] => OBJ12345_1732393235
                    [status] => Array
                        (
                            [id] => 4
                            [name] => Såld
                        )
                )

            [2] => Array
                (
                    [type] => plots
                    [id] => OBJ15053_1771637082
                    [status] => Array
                        (
                            [id] => 4
                            [name] => Såld
                        )

                )

        )

请帮忙!:)


请提供一个您正在尝试创建的数据结构的示例。 - kmoser
我更新了我的问题,并提供了一个我正在尝试创建的数据结构示例。 - djsringup
1个回答

2
当您创建第一个foreach循环时,希望保留每个数组对象的键。语法如下:

foreach ($arr as $key => $value) {
    echo "{$key} => {$value} ";
    print_r($arr);
}

所以以您的例子为例,应该是这样的:
// Create array of all objects
  $AllEstatesList = array();
    foreach ($GetEstateList[0] as $EstateType => $GetEstateType) {
        foreach ($GetEstateType as $GetEstate) {
            if ($GetEstate["id"] != null) {
                $GetEstate["type"] = $EstateType;
                $AllEstatesList[] = $GetEstate;
            }
        }
    }

谢谢,可能有效,但结果不是我想要的,请看我的新“答案”应该是什么样子的。 - djsringup
1
我明白了,我已经更新了我的答案以获得你想要的结果。你应该删除你的答案并更新你的问题,以遵循堆栈溢出的礼仪。 - Brettins
太好了!非常感谢!(我根据您指出的更新了我的问题) - djsringup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接