2013-06-17 27 views
14

Nach mehreren Stunden des Durcheinanderziehens, Schwitzens und Ziehens meiner Haare kann ich immer noch nicht auf diese Werte zugreifen. Ich möchte die erste Ebene von Arrays durchlaufen, und das ist mit einer einfachen "foreach" -Schleife einfach genug, aber ich kann nicht auf das '[' ''] '' -Array auf dem zweiten Sub-Array zugreifen. Ich habe mich umgeschaut, kann aber anscheinend nichts anderes als wirklich einfache Array-Tutorials bekommen, die nicht weit in das Looping zu gehen scheinen.PHP - Zugriff auf multidimensionale Array-Werte

Ich versuche auf die Werte im verschachtelten/Unter-Array zuzugreifen, zB '[' Species_name ']'.

Ich möchte nicht assoziative Schlüssel verwenden, da die Sortierung ein kleines Problem darstellt.

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

Was meinen Sie, wenn Sie sagen: "Ich möchte keine assoziativen Schlüssel verwenden, da das Sortieren ein kleines Problem darstellt." – Orangepill

+1

Willkommen bei Stack Overflow. Danke für das Schreiben einer so gut geschriebenen und detaillierten Frage! +1. –

Antwort

16

Die Sache, die Sie wahrscheinlich nach oben ist Auslösung ist, dass Eignung so in einem Beispiel ein Array von Arrays nicht nur ein Array ist, wo Sie die species_name Eigenschaft des ersten zweiten Top-Level-Element erhalten wollen würden Sie etwas verwenden wie

$array[1]["suitability"][0]["species_name"]; 

Es ist erwähnenswert, dass Ihre erste Array keinen „Eignung“ Wert enthält, so dass nicht zugegriffen werden kann. In einer foreach-Schleife könnte man ein Konstrukt ähnlich wie diese verwenden:

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

Ich zähle nur Array Post innerhalb dann var_dump aus Seite Foreach, aber es funktioniert nicht, wenn Sie nichts dagegen haben, ist mein Skript http://pastebin.com/jFxSkhzT –

+0

Sie überschreiben die Variable $ Kuantity jede Iteration in die Schleife. Was Sie wahrscheinlich sehen, ist der Wert der letzten Iteration. – Orangepill

+0

Wechsel zu '$ kuantity [] = Anzahl ($ _ POST ['Quantity'] [$ key]);' – Orangepill

0

Sie einen Blick auf PHP: RecursiveArrayIterator class nehmen kann

Dies ermöglicht es Ihnen, über Multiples ArrayIterator verschachtelt iterieren. Wenn Sie keinen ArrayIterator verwenden, sollten Sie diese ausprobieren.