【发布时间】:2020-03-18 09:43:00
【问题描述】:
我有一个新项目的新问题。目前我正在创建一个新网站来跟踪 WoW 中游戏角色的多个统计信息,所以我使用了 blizzard api 并从 json 文件中询问信息。我现在遇到的问题:我需要从这个JSON-File 中得到一个特定的值。 我需要 ID 为 370 的“数量”值,它位于可变行号中。为此,我使用这样的 foreach 循环:
foreach($decodearena3['statistics'][8]['sub_categories'][0]['statistics'] as $arenastats) {
if ($arenastats['id'] == "370") {
echo $arenastats['quantity'];
}
问题是:[8] 行是可变的,因此它也可以是任意数字,具体取决于角色的经验。在这一行中是一个 ID (21),所以我想我应该做一个 foreach 来找到那个 ID,然后是最后一行。在那之后我想我需要做一个新的 foreach 然后在另一个未知行中找到 ID 370,对吧?
我希望你明白我的意思,因为我的英语水平不是最好的。也许屏幕截图能更好地解释它:)。
解释我在寻找什么的屏幕截图:
【问题讨论】:
-
这基本上和你昨天问的问题一样:Foreach Loop JSON get specific value
-
不,不是真的。这是我在这之前的问题。现在我需要在一个未知的行号中找到一个未知的行号:/。在这里得到这个逻辑感觉真的很复杂。请看我添加的截图。
-
那么请解释一下这实际上是如何,显着不同的。昨天你有
$decodeachieve['achievements'][2207]['id'],并说你想在其中寻找一些东西,但2207部分不是静态的。所以,明显的反应 - 循环$decodeachieve['achievements']然后。我看不出现在关于这种情况的任何事情会有什么显着不同? -
是的,这不是静态的,现在我需要进入第一个未知数..然后在第一个未知数中找到第二个未知数。所以我需要在foreach中做一个foreach?!也许我只是不明白。 :( 想了一整天来把它做好。
-
当您使用
foreach ($something as $value)时,您将在循环中使用$value。所以嵌套的 foreach 需要引用 that:foreach ($value as $whatever)。下一个使用$whatever等等。此外,切勿将您的单个值(as之后的部分)命名为与您正在使用的原始变量相同的名称,就像您在此处所做的那样:foreach($pvpid['statistics'] as $pvpid)。在循环结束时,您原来的$pvpid将被循环中的最后一个值覆盖。