我一直在研究这个问题几天,我似乎无法弄明白。
我想尝试做一些简单的事情,我想,只是循环一个数组。 这是数组的屏幕截图:http://cl.ly/image/3j2J3x1C3B0j 我正在尝试遍历所有“技能”数组,其中包含“技能”数组,并且内部会抓住“图标”。 为此我做了2个循环:
foreach ($hero_data['skills'] as $skills)
{
foreach ($skills as $skill)
{
//print_r($skill['skill']);
}
}
不幸的是,这在laravel中不起作用。我收到了“Undefined index:skill”错误。当我在外面尝试它时,它确实有效,作为一个独立的脚本。
在两个循环的外侧,我可以选择带有以下内容的图标:
print_r($hero_data['skills']['active'][0]['skill']['icon']);
我确定我忽视了一些愚蠢的事情......
非常感谢你的帮助,
答案 0 :(得分:2)
看看你在这里发布的其他解决方案中所说的内容,很明显你是在循环遍历子数组,而不是所有这些子数组都包含你的其他循环所需的键。
试试这个:
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']
数组进一步向下,那么循环将抛出您报告的错误。< / p>
您正在寻找的嵌套数组键必须在循环的每次迭代中找到,否则您必须插入一个子句以跳过这些数组元素(如果找不到它们)。看起来您的$hero_data
数组中的部分没有['skill']
或['icon']
,因此请尝试在循环中插入一个或多个isset()
检查。否则,您需要找到一种保证$hero_data
数组完整性的方法。
顺便说一句,你的游戏看起来很有趣!
答案 1 :(得分:0)
在内部技能中,您拥有“活动”属性并且它包含您需要的数组,因此您需要将代码更改为:
foreach ($hero_data['skills'] as $skills)
{
foreach ($skills['active'] as $skill)
{
//print_r($skill['skill']);
}
}
答案 2 :(得分:0)
尝试:
foreach ($hero_data['skills'] as $skills)
{
foreach ($skills as $skillState)
{
foreach ($skillState as $skill)
{
print_r($skill['skill']);
}
}
}
答案 3 :(得分:0)
您只需要迭代数组的活动索引。这应该有效:
foreach ($hero_data['skills']['active'] as $skills) {
print_r($skills['skill']['icon']);
}