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:未定义的索引 - 数组键不存在的主要内容,如果未能解决你的问题,请参考以下文章