2013-06-17 10 views
14

Po kilku godzinach brudzenia, pocenia się i wyrywania włosów nie mogę uzyskać dostępu do tych wartości. Chcę przechodzić przez pierwszy poziom tablic i jest to dość proste z podstawową pętlą "foreach", ale nie mogę dostać się do tablicy "['suitability'] 'w drugiej tablicy podrzędnej. Rozglądałem się dookoła, ale nie mogę uzyskać niczego poza naprawdę podstawowymi samouczkami tablicowymi, które nie zagłębiają się daleko w pętle.PHP - Uzyskiwanie dostępu do wielowymiarowych wartości macierzy

Próbuję uzyskać dostęp do wartości w tablicy zagnieżdżonych/podrzędnych, tj. "[" Nazwa gatunkowa "]".

Nie chcę używać kluczy asocjacyjnych, ponieważ sortowanie to problem.

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

co masz na myśli mówiąc "Nie chcę używać kluczy asocjacyjnych, ponieważ sortowanie to problem". – Orangepill

+1

Witamy w przepełnieniu stosu. Dziękuję za napisanie tak dobrze napisanego i szczegółowego pytania! +1. –

Odpowiedz

16

Rzecz, która jest prawdopodobnie potknięcia cię to, że przydatność jest tablicą tablic nie tylko tablicę tak na przykład, w którym chcesz, aby właściwość species_name pierwszego drugiego elementu najwyższego poziomu byłoby użyć coś jak

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

Warto zauważyć, że pierwsza tablica nie zawiera wartości "odpowiedniości", więc nie można uzyskać do niej dostępu. W pętli foreach można użyć konstrukt podobnego do tego:

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

Po prostu liczę tablicę posta wewnątrz, a następnie var_dump out strony foreach, ale to nie działa, jeśli nie masz nic przeciwko, to mój skrypt http://pastebin.com/jFxSkhzT –

+0

Nadpisujesz zmienną $ kuantity w każdej iteracji pętla. Prawdopodobnie widzisz wartość ostatniej iteracji. – Orangepill

+0

Przejdź do '$ kuantity [] = count ($ _ POST ['ilość'] [$ key]);' – Orangepill

0

Można przyjrzeć PHP: RecursiveArrayIterator class

To pozwoli Ci iteracyjne nad wielokrotności zagnieżdżonych ArrayIterator. Jeśli nie korzystasz z ArrayIterator, powinieneś rozważyć ich wypróbowanie.

Powiązane problemy