【问题标题】:echo specific value with specific id in unknown rows (foreach loop)在未知行中回显具有特定 ID 的特定值(foreach 循环)
【发布时间】: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,对吧?

我希望你明白我的意思,因为我的英语水平不是最好的。也许屏幕截图能更好地解释它:)。

解释我在寻找什么的屏幕截图:

image

【问题讨论】:

  • 这基本上和你昨天问的问题一样:Foreach Loop JSON get specific value
  • 不,不是真的。这是我在这之前的问题。现在我需要在一个未知的行号中找到一个未知的行号:/。在这里得到这个逻辑感觉真的很复杂。请看我添加的截图。
  • 那么请解释一下这实际上是如何,显着不同的。昨天你有$decodeachieve['achievements'][2207]['id'],并说你想在其中寻找一些东西,但2207 部分不是静态的。所以,明显的反应 - 循环 $decodeachieve['achievements'] 然后。我看不出现在关于这种情况的任何事情会有什么显着不同?
  • 是的,这不是静态的,现在我需要进入第一个未知数..然后在第一个未知数中找到第二个未知数。所以我需要在foreach中做一个foreach?!也许我只是不明白。 :( 想了一整天来把它做好。
  • 当您使用foreach ($something as $value) 时,您将在循环中使用$value。所以嵌套的 foreach 需要引用 thatforeach ($value as $whatever)。下一个使用$whatever 等等。此外,切勿将您的单个值(as 之后的部分)命名为与您正在使用的原始变量相同的名称,就像您在此处所做的那样:foreach($pvpid['statistics'] as $pvpid)。在循环结束时,您原来的 $pvpid 将被循环中的最后一个值覆盖。

标签: php json foreach


【解决方案1】:

@El_Vanja 的这条评论帮助我找到了解决方案: 当您使用 foreach ($something as $value) 时,您将在循环中使用 $value。所以嵌套的 foreach 需要引用:foreach ($value as $whatever)。下一个使用 $whatever 等等。此外,永远不要将您的单个值(as 之后的部分)命名为与您正在使用的原始变量相同的名称,就像您在此处所做的那样:foreach($pvpid['statistics'] as $pvpid)。在循环结束时,您的原始 $pvpid 将被循环中的最后一个值覆盖。 – El_Vanja

        foreach($decodearena3['statistics'] as $staticsid) {
            if ($staticsid['id'] == "21") {
                foreach($staticsid['sub_categories'][0]['statistics'] as $ratedarenaid) {
                    if ($ratedarenaid['id'] == "370") {
                        echo $ratedarenaid['quantity'];
             }
            }
           } 
          }

谢谢!

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 2022-06-23
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2018-11-11
    相关资源
    最近更新 更多