多维数组JSON PHP迭代

时间:2016-02-12 14:30:46

标签: php arrays json loops multidimensional-array

这是我的JSON文件,名为(inventory.json)。如何解析json,以便我可以在"描述"中获取所有库存的tag_name。阵列?由于Inventory数组的classid指出了描述的id / classid,因此似乎可以从描述中获取每个库存标记,但我不知道这样做。

我读了一些关于递归数组迭代器的内容,但是对于每一个,我都不知道在这种情况下哪一个是合适的。我在这里很新,所以请善待!谢谢。

 {
    "Inventory": {
        "7905269096": {
            "id": "7905269096",
            "classid": "771158876",
            "instanceid": "782509058",
            "amount": "1",
            "pos": 1
        },
        "7832200468": {
            "id": "7832200468",
            "classid": "626495772",
            "instanceid": "1463199080",
            "amount": "1",
            "pos": 2
        },
        "7832199378": {
            "id": "7832199378",
            "classid": "626495770",
            "instanceid": "1463199082",
            "amount": "1",
            "pos": 3
        },
        "Descriptions": {
            "771158876": {
                "classid": "771158876",
                "instanceid": "782509058",
                "tags": [{
                    "tag_name": "unique",
                    "name": "standard"
                }]
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您的JSON字符串无效,但希望此答案会引导您找到所需结果的正确路径。

首先,将其变为PHP数组:

$jsonArray = /* your json array */;
$phpArray = json_decode($jsonArray, true);

然后你可以迭代其中一个数组("库存"一个)并找到相关的标签名称:

//Create a new array to hold the key=>value data
$combined = [];

foreach($phpArray["Inventory"] as $i => $v){
    //Find the relevant key in the Descriptions array and
    //push this information information to the $combined array
    $combined[$i] = $phpArray["Descriptions"][$i]["tags"]["tag_name"];

    /* The above is essentially the same as
    $combined["7905269096"] = "unique"; */
}

然后,$combined将是一个键/值数组,其中键是ID(例如" 7905269096"),值将是标记名称(例如"唯一&# 34。)