根据值获取多维数组属性

时间:2018-07-13 12:04:28

标签: php multidimensional-array

我整个上午都在动脑筋,我终于让步了。

$data =    '{
      "anchorsMap": {
        "masterPage": {
          "DESKTOP": {
            "SITE_HEADER": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_HEADER",
                "targetComponent": "masterPage",
                "type": "BOTTOM_PARENT"
              },
              {
                "distance": 5,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_HEADER",
                "targetComponent": "PAGES_CONTAINER",
                "type": "BOTTOM_TOP"
              }
            ],
            "PAGES_CONTAINER": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 0,
                "fromComp": "PAGES_CONTAINER",
                "targetComponent": "SITE_FOOTER",
                "type": "BOTTOM_TOP"
              }
            ],
            "SITE_FOOTER": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_FOOTER",
                "targetComponent": "masterPage",
                "type": "BOTTOM_PARENT"
              }
            ],
            "FvGrdLn5": [
              {
                "distance": 151,
                "locked": false,
                "originalValue": 241,
                "fromComp": "FvGrdLn5",
                "targetComponent": "SITE_STRUCTURE_WRichText_1",
                "type": "BOTTOM_TOP"
              }
            ],
            "comp-j4ydi86i": [
              {
                "distance": 21,
                "locked": true,
                "originalValue": 43,
                "fromComp": "comp-j4ydi86i",
                "targetComponent": "FvGrdLn0",
                "type": "TOP_TOP"
              },
              {
                "distance": 63,
                "locked": true,
                "originalValue": 85,
                "fromComp": "comp-j4ydi86i",
                "targetComponent": "FvGrdLn5",
                "type": "TOP_TOP"
              },
              {
                "distance": 25,
                "locked": true,
                "originalValue": 241,
                "fromComp": "comp-j4ydi86i",
                "targetComponent": "SITE_STRUCTURE_WRichText_1",
                "type": "BOTTOM_TOP"
              }
            ],
            "SITE_STRUCTURE_WRichText_1": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 241,
                "fromComp": "SITE_STRUCTURE_WRichText_1",
                "targetComponent": "WRchTxt1",
                "type": "TOP_TOP"
              },
              {
                "distance": 4,
                "locked": true,
                "originalValue": 263,
                "fromComp": "SITE_STRUCTURE_WRichText_1",
                "targetComponent": "SITE_FOOTER",
                "type": "BOTTOM_PARENT"
              }
            ],
            "WRchTxt1": [
              {
                "distance": 5,
                "locked": true,
                "originalValue": 263,
                "fromComp": "WRchTxt1",
                "targetComponent": "SITE_FOOTER",
                "type": "BOTTOM_PARENT"
              }
            ],
            "SITE_PAGES": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_PAGES",
                "targetComponent": "PAGES_CONTAINER",
                "type": "BOTTOM_PARENT"
              }
            ],
            "comp-ilxrenwr": [
              {
                "distance": 19,
                "locked": true,
                "originalValue": 237,
                "fromComp": "comp-ilxrenwr",
                "targetComponent": "comp-ilxrftyg",
                "type": "BOTTOM_TOP"
              }
            ]
          }
        },
        "defaultMasterPage": {
          "DESKTOP": {
            "SITE_HEADER": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_HEADER",
                "targetComponent": "masterPage",
                "type": "BOTTOM_PARENT"
              },
              {
                "distance": 5,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_HEADER",
                "targetComponent": "PAGES_CONTAINER",
                "type": "BOTTOM_TOP"
              }
            ],
            "comp-j4ydi86i": [
              {
                "distance": 21,
                "locked": true,
                "originalValue": 43,
                "fromComp": "comp-j4ydi86i",
                "targetComponent": "FvGrdLn0",
                "type": "TOP_TOP"
              },
              {
                "distance": 63,
                "locked": true,
                "originalValue": 85,
                "fromComp": "comp-j4ydi86i",
                "targetComponent": "FvGrdLn5",
                "type": "TOP_TOP"
              },
              {
                "distance": 25,
                "locked": true,
                "originalValue": 241,
                "fromComp": "comp-j4ydi86i",
                "targetComponent": "SITE_STRUCTURE_WRichText_1",
                "type": "BOTTOM_TOP"
              }
            ],
            "SITE_PAGES": [
              {
                "distance": 0,
                "locked": true,
                "originalValue": 0,
                "fromComp": "SITE_PAGES",
                "targetComponent": "PAGES_CONTAINER",
                "type": "BOTTOM_PARENT"
              }
            ]
          }
        },
        "c1adf": {
          "DESKTOP": {
          },
          "dataItem-jaifm1zz2": {
                "type": "Image",
                "id": "dataItem-jaifm1zz2",
                "metaData": {
                  "isPreset": false,
                  "schemaVersion": "2.0",
                  "isHidden": false
                },
                "title": "IMG_5774",
                "uri": "06b01b_8675350495a4472ea473f93589258f01~mv2_d_1936_2592_s_2.jpg",
                "width": 1936,
                "height": 2592,
                "alt": ""
          }
        }
      }
    }';

$data = json_decode($data, true);

我正在尝试获取所有具有等于“ uri”的“键”的值

因此在此示例中,结果将返回:

array(
   0 => 06b01b_8675350495a4472ea473f93589258f01~mv2_d_1936_2592_s_2.jpg
)

我尝试使用:

array_searcharray_column,还尝试了array_map

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

如何?

$matches = [];
$identifier = 'uri';
array_walk_recursive($data, function ($item, $key) use (&$matches, $identifier) {
    if ($key == $identifier) {
        return $matches[] = $item;
    }
});

print_r($matches);

Array ( [0] => 06b01b_8675350495a4472ea473f93589258f01~mv2_d_1936_2592_s_2.jpg )