几天来我一直在尝试解析JSON响应,但没有成功。我在互联网和这个网站上读到如何用foreach解析,但我认为json的结构与我发现的例子太不同了。这里是JSON:
array(1)
{ ["matches"]=> array(10)
{ [0]=> array(13) { ["matchId"]=> int(2125878813)
["region"]=> string(3) "EUW"
["platformId"]=> string(4) "EUW1"
["matchMode"]=> string(7) "CLASSIC"
["matchType"]=> string(12) "MATCHED_GAME"
["matchCreation"]=> float(1432656547642)
["matchDuration"]=> int(1852)
["queueType"]=> string(15) "RANKED_SOLO_5x5"
["mapId"]=> int(11)
["season"]=> string(10) "SEASON2015"
["matchVersion"]=> string(9) "5.9.0.318"
["participants"]=> array(1)
{ [0]=> array(10) {
["teamId"]=> int(200)
["spell1Id"]=> int(7)
["spell2Id"]=> int(4)
["championId"]=> int(67)
["highestAchievedSeasonTier"]=> string(8) "PLATINUM"
["timeline"]=> array(9)
{ ["creepsPerMinDeltas"]=> array(3)
{ ["zeroToTen"]=> float(6.2)
["tenToTwenty"]=> float(7.4)
["twentyToThirty"]=> float(4.4) }
["xpPerMinDeltas"]=> array(3)
{ ["zeroToTen"]=> float(336.2)
["tenToTwenty"]=> float(428.3)
["twentyToThirty"]=> float(396) }
["goldPerMinDeltas"]=> array(3) {
["zeroToTen"]=> float(270.7)
["tenToTwenty"]=> float(363.6)
["twentyToThirty"]=> float(294.8) }
如果我理解得好,这是一个数组,里面有制表符和数组?
以下是我目前所做的显示我想例如显示10个匹配id:比赛——> matchId比赛->参与者> championId比赛参与者-> ->时间> creepsPerMinDeltas -> zeroToTen
matchId
:
$decodeHisto = json_decode ($resultHisto,true);
//var_dump($decodeHisto);
foreach ($decodeHisto{[matches]} as $d)
{
echo $d->{[matchId]}-;
}
谁能帮我一下?
你的代码不是JSON,因为JSON是这样定义的:
{
"Herausgeber": "Xema",
"Nummer": "1234-5678-9012-3456",
"Deckung": 2e+6,
"Waehrung": "EURO",
"Inhaber": {
"Name": "Mustermann",
"Vorname": "Max",
"maennlich": true,
"Hobbys": [ "Reiten", "Golfen", "Lesen" ],
"Alter": 42,
"Kinder": [],
"Partner": null
}
}
你可以用下面的代码将JSON数组转换为PHP:
$array = json_decode($json);
但正如我之前所说,你的代码不是JSON。它甚至像是一个PHP数组。然后你可以使用:
$arr["matches"][0]["matchId"]
例如。
考虑到你在这里对你的问题发表了自己的"回答",提供了额外的信息,我想指出这一点:
所以如果你在你的问题中发布的是你从调用json_decode()
得到的结果的转储,那么你所拥有的只是一个数组。一个关联的,多层数组,但仍然只是一个普通的php数组。这也是json_decode()
函数的文档中明确说明的:http://php.net/manual/en/function.json-decode.php
绝对没有理由以某种方式"解析"数组。您可以在转储中看到的"制表符"或空白符是,而不是结果的部分,因此也不是数组的部分。这些是你用来可视化数组的dumoing函数的产物。你可以简单地通过关联的"路径"直接访问数组的所有成员(或成员的成员…),就像你可以在谷歌上找到的所有php代码示例中看到的那样。下面是一个例子:
$value = $decodedJson['matches'][0]['matchDuration'];
给定$decodedJson
是在你的问题中发布的结果数组,那么$value
现在将保持整数值1852。
可以访问数组的任何部分或元素。您可以使用php的迭代构造(如foreach
等)遍历数组的各个部分。您可以通过php的数组函数(http://php.net/manual/en/ref.array.php)在数组中进行搜索。