我正在使用暴雪API,并希望从此json-file中获得特定的价值。 我想,我可以通过一个foreach循环来实现它,该循环正在ID的“成就”树中查找ID“ 13212”,问题是:在“成就”树中,有2000多个编号行,而ID为在,是可变的。因此,我不能这样做。.
foreach($decodeachieve['achievements'][2207]['id'] as $item) {
if($item == "13212") {
//show Achievementpicture
}
}
..因为行[2207]不是静态的并且可以更改。因此,我需要在每2392行“成就”中搜索ID“ 13212”。我如何以目前的方式实现这一目标?当我想在每一行中搜索时,我需要写什么而不是行[2207]。因为它的变量?
感谢您的帮助。 我希望我解释清楚,我的英语不是最好的。
一些JSON示例,如果上面的链接不起作用:
"achievements": [
{
"id": 13212,
"achievement": {
"key": {
"href": "https://us.api.blizzard.com/data/wow/achievement/6?namespace=static-8.3.0_32861-us"
},
"name": "Level 10",
"id": 13212
},
"criteria": {
"id": 2050,
"is_completed": true
},
"completed_timestamp": 1313210612000
},
{
"id": 7,
"achievement": {
"key": {
"href": "https://us.api.blizzard.com/data/wow/achievement/7?namespace=static-8.3.0_32861-us"
},
"name": "Level 20",
"id": 7
},
"criteria": {
"id": 2683,
"is_completed": true
},
"completed_timestamp": 1313215978000
},
答案 0 :(得分:0)
最简单的方法是将foreach分为两部分:
foreach($decodeachieve['achievements'] as $achievement) {
// first go through all achievements
foreach ($achievement as $item) {
//then you should be able to filter items
if ($item !== "13212") {
continue;
}
// do something
}
}
编辑:发布json后,似乎更容易了:
foreach($decodeachieve['achievements'] as $achievement) {
if ($achievement['id'] !== "13212") { // or $achievement['id']['achievement']
continue;
}
// do something
}
答案 1 :(得分:0)
好吧,我得到了@Beniamin的解决方案。
我将您的代码更改为此(杀死了“ continue;”,并将!==更改为==):
foreach($decodeachieve['achievements'] as $achievement) {
if ($achievement['id'] == "5266") { // or $achievement['id']['achievement']
echo "<div class='specialTitles'><img src='https://wow.zamimg.com/images/wow/icons/large/achievement_arena_3v3_7.jpg' style='border-radius: 50%; border: 2px solid #fff; box-shadow: 0px 0px 11px 1px rgba(0,0,0,0.37);'>";
echo "<div class='document__title'>Dreierbande: 2.400</div></div>";
}
}
对我有用。
感谢大家的帮助!