2013-06-17 22 views
14

数時間の混乱、発汗、髪の毛を引っ張っても、これらの値にはまだアクセスできません。最初のレベルの配列をループしたいのですが、それは基本的な 'foreach'ループでは簡単ですが、2番目のサブ配列の '[' suitability ']配列には見えません。私は周りを見回しましたが、実際には基本的な配列のチュートリアル以外のものを得ることはできません。多次元配列の値へのアクセス

私はネスト/サブアレイの値、つまり '[' Species_name ']'にアクセスしようとしています。

並べ替えに問題があるため、連想キーは使用しません。

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [name] => Bradeley Hall Pool 
      [postcode] => CW1 5QN 
      [lat] => 53.10213 
      [lon] => -2.41069 
      [size] => 1.60 
      [pegs] => 21 
      [distance] => 26.6 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [name] => Farm Pool 
      [postcode] => CW9 6JQ 
      [lat] => 53.320502 
      [lon] => -2.549049 
      [size] => 0.88 
      [pegs] => 8 
      [distance] => 15.4 
      [suitability] => Array 
       (
        [0] => Array 
         (
          [fk_water_id] => 2 
          [fk_species_id] => 4 
          [species_name] => Barbel 
          [species_rating] => 1 
          [record_id] => 1 
          [weight_kg] => 2.721554 
          [length_cm] => 40 
          [height_cm] => 30 
         ) 
       ) 
     ) 
) 
+0

「並べ替えに問題があるため、連想キーを使用したくない」と言ったらどういう意味ですか? – Orangepill

+1

ようこそスタックオーバーフロー。そのようなよく書かれた詳細な質問をお書きいただきありがとうございます! +1。 –

答えて

16

おそらくあなたをトリップされる事は適合性は、あなたが何かを使用する第一、第二、トップレベル要素のspecies_nameプロパティを取得したいの例では、これだけのアレイ配列の配列ではないということですlike

最初の配列にはアクセスできないように「適合性」値が含まれていません。これは、あなたがArrayIteratorネストされた倍数を反復することができ

foreach($array as $value){ 
    if (isset($value["suitability"])){ 
     echo $value["suitability"][0]["species_name"]; 
    } 
} 
+0

私はちょうど私のスクリプトhttp://pastebin.com/jFxSkhzT –

+0

あなたがここに気にしない場合は、私はちょうど内部の配列のポストをカウントvar_dumpサイドforeachを、しかしそれは動作しませんあなたは変数$ kuantityすべての反復を上書きしているループ。あなたが見ているのは、最後の反復の価値です。 – Orangepill

+0

'$ kuantity [] = count($ _Post ['quantity'] [$ key]);' – Orangepill

0

あなたはPHP: RecursiveArrayIterator class

を見てみることがあります。foreachループでは、これに似た構文を使用することができます。 ArrayIteratorを使用していない場合は、それらを試してみてください。