1

几天来我一直在研究这个问题,但我似乎无法弄清楚。

我想,我正在尝试做一些简单的事情,只是循环遍历一个数组。这是数组的屏幕截图: http: //cl.ly/image/3j2J3x1C3B0j 我正在尝试遍历所有的“技能”数组,那里有“技能”数组和里面的“图标”。为此我做了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']);

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

非常感谢您的帮助,

4

4 回答 4

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']数组更下方,那么循环将抛出您一直报告的错误。

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

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

于 2012-10-15T17:16:30.357 回答
0

在技​​能内部,您有一个“活动”属性,它包含您需要的数组,因此您需要将代码更改为:

 foreach ($hero_data['skills'] as $skills)
            {
                foreach ($skills['active'] as $skill)
            {
                //print_r($skill['skill']);
            }
    }
于 2012-10-15T15:54:31.450 回答
0

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

foreach ($hero_data['skills']['active'] as $skills) {
    print_r($skills['skill']['icon']);
}
于 2012-10-15T16:07:56.937 回答
0

尝试:

foreach ($hero_data['skills'] as $skills)
{
  foreach ($skills as $skillState)
  {
    foreach ($skillState as $skill)
    {
      print_r($skill['skill']);
    }
  }
}
于 2012-10-15T15:55:00.160 回答