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また、配列にはまたはがない部分があるように思われるため、ループに1つ以上のチェックを挿入してみてください['skill']。それ以外の場合は、アレイの整合性を保証する方法を見つける必要があります。['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'] as $skills)
{
  foreach ($skills as $skillState)
  {
    foreach ($skillState as $skill)
    {
      print_r($skill['skill']);
    }
  }
}
于 2012-10-15T15:55:00.160 に答える
0

配列のアクティブなインデックスを繰り返す必要があります。これはうまくいくはずです:

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