PHPで

2011-12-25 9 views
0

やあみんなをforeach文で配列を扱う私はこのPHPで

print_r($grouparray); 

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => new group 1 
      [2] => 100 
      [3] => 1000 
      [4] => group description 
      [5] => #000000 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => new group 2 
      [2] => 1000 
      [3] => 2000 
      [4] => group description 
      [5] => #ff0000 
     ) 

) 

ような配列は、今、私はforeach文を書くことが許されています持っていると私はこれでした:

 foreach ((array)$grouparray AS $groups => $group) { 
      echo $group[1]."<br>"; 
     } 

をし、出力は次のようになります:

new group 1 
new group 2 

出力はnullです。

+0

なぜforeachでは '(配列)'にキャストしていますか? – knittl

+0

はテンプレートエンジンの構文なので、 array()マーク –

答えて

3

を:

$grouparray [] = array (
    1, 'new group 1', description); 

$grouparray [] = array (
    2, 'new group 2', description); 


print_r($grouparray); 

foreach ($grouparray as $groups=>$group) { 
    echo $group[1]."\r\n"; 
} 

出力は次のとおりです。

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => new group 1 
      [2] => description 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => new group 2 
      [2] => description 
     ) 

) 
new group 1 
new group 2 

私opinoinは、その「新しいグループ1であります"は割り当てられていません ject。それをチェック!

+0

ええ、ありがとう、私は正しかった、あなたは正しい行が割り当てられていないので、私はnull出力を得た。それはとても愚かだった、私はいくつかの休息を取る必要があります –

2
foreach ($grouparray as $group) { 
    echo $group[1] . "<br />"; 
} 
1

あなたのコードに修正するいくつかのものがあります。

  1. あなたのアレイのキャストtpyeを必要としない、それはすでに配列です。
  2. キーではなく値を探しているので、省略することができます。

これは私たちに次のコードを提供します:それは私の作品

foreach ($grouparray as $group) { 
    echo $group[1] . "<br />"; 
} 
+0

を使ってforeach内の配列だけを使用することができますが、配列が2レベルのループであることに気付きましたか?最初は全体的なグループで、もう1つはグループの詳細です。 –

+0

この場合、 '$ group'を他の配列と同じようにループします。 –

+0

私はそれを知らなかったと私を信じて、私は2つのレベルの配列はより多くの仕様のための=>を持っているべきだと思った。 –