Laravel:未定义的索引 - 数组键不存在

Posted

技术标签:

【中文标题】Laravel:未定义的索引 - 数组键不存在【英文标题】:Laravel: Undefined index - array key not existant 【发布时间】: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数组吗?您可能正在循环遍历没有所需键但它们在屏幕截图中不可见的元素。 【参考方案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 检索到的数据。 :)

以上是关于Laravel:未定义的索引 - 数组键不存在的主要内容,如果未能解决你的问题,请参考以下文章

数组中存在键时未定义的索引错误

如果存在数组,则需要 Laravel 验证数组元素

尽管存在索引,但未定义的索引仍然存在

未定义索引(Laravel)

索引以查找外键不存在的记录

Laravel 迁移未定义索引