【问题标题】:Laravel: Undefined index - array key not existantLaravel:未定义的索引 - 数组键不存在
【发布时间】:2012-10-05 15:28:39
【问题描述】:

我已经研究这个问题几天了,但我似乎无法弄清楚。

我想,我正在尝试做一些简单的事情,只是循环遍历一个数组。 这是数组的截图:http://cl.ly/image/3j2J3x1C3B0j 我正在尝试遍历所有 'Skills' 数组,那里是“Skill” 数组和里面的“Icon”。 为此,我做了 2 个循环:

    foreach ($hero_data['skills'] as $skills)
            {
                foreach ($skills as $skill)
            {
                //print_r($skill['skill']);
            }
    }

不幸的是,这在 laravel 中不起作用。我收到“未定义的索引:技能”错误。当我在外面尝试它时,它确实有效,作为一个独立的脚本。

在两个循环之外,我可以选择图标:

    print_r($hero_data['skills']['active'][0]['skill']['icon']);

我确定我忽略了一些愚蠢的事情......

非常感谢您的帮助,

【问题讨论】:

  • 你能发布你的完整$hero_data数组吗?您可能正在循环遍历没有所需键但它们在屏幕截图中不可见的元素。

标签: php arrays foreach laravel


【解决方案1】:

在技能里面你有一个'active'属性,它包含你需要的数组,所以你需要把你的代码改成这样:

 foreach ($hero_data['skills'] as $skills)
            {
                foreach ($skills['active'] as $skill)
            {
                //print_r($skill['skill']);
            }
    }

【讨论】:

  • 这样做时我得到“未定义的索引:活动”。 :(
【解决方案2】:

试试:

foreach ($hero_data['skills'] as $skills)
{
  foreach ($skills as $skillState)
  {
    foreach ($skillState as $skill)
    {
      print_r($skill['skill']);
    }
  }
}

【讨论】:

  • 使用此代码时同样的错误。太奇怪了,这不起作用:/
【解决方案3】:

您只需要迭代数组的 active 索引。这应该工作:

foreach ($hero_data['skills']['active'] as $skills) {
    print_r($skills['skill']['icon']);
}

【讨论】:

    【解决方案4】:

    看看您从此处发布的其他解决方案中所说的内容,很明显您正在循环遍历子数组,并且并非所有这些子数组都包含您的进一步循环正在寻找的键。

    试试这个:

    foreach ($hero_data['skills']['active'] as $skills) {
        if (isset($skills['skill']['icon'])) {
            print_r($skills['skill']['icon']);
        }
    }
    

    因为,例如,如果$hero_data['skills']['active'][8] 实际上没有skill 数组或['skill']['icon'] 数组,那么循环将抛出您一直报告的错误。

    您要查找的嵌套数组键必须在循环的每次迭代中都能找到,否则您必须插入一个子句以跳过这些数组元素(如果找不到)。并且您的$hero_data 数组似乎包含没有['skill']['icon'] 的部分,因此请尝试在循环中插入一个或多个isset() 检查。否则,您需要找到一种方法来保证 $hero_data 数组的完整性。

    顺便说一句,你的游戏看起来很有趣!

    【讨论】:

    • 这修复了它。感谢您的出色解释,我现在明白了,希望再也不会犯这个错误。 :) 再次感谢!
    • 哦,是的,这是从暗黑破坏神 3 API 检索到的数据。 :)
    猜你喜欢
    • 2020-09-24
    • 2021-09-20
    • 2018-08-02
    • 2012-08-24
    • 2015-03-23
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多