2013-06-17 20 views
14

Dopo diverse ore di incasinare, sudare e strapparmi i capelli non riesco ancora ad accedere a questi valori. Voglio passare al primo livello di array, e questo è abbastanza semplice con un ciclo di base 'foreach', ma non riesco a raggiungere l'array '[' suitable ']' sul secondo sub array. Mi sono guardato attorno ma non riesco a ottenere nulla di diverso dai tutorial di array veramente basilari che non sembrano approfondire il ciclo.PHP - Accesso ai valori di array multidimensionali

Sto tentando di accedere ai valori nell'array nidificato/sub, ovvero '[' Species_name ']'.

Non voglio utilizzare le chiavi associative in quanto l'ordinamento è un po 'un problema.

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

cosa intendi quando dici "Non voglio usare le chiavi associative perché l'ordinamento è un po 'un problema". – Orangepill

+1

Benvenuti in Stack Overflow. Grazie per aver scritto una domanda così ben scritta e dettagliata! +1. –

risposta

16

La cosa che è probabilmente inciampare è che l'idoneità è un array di array non solo un allineamento così in un esempio in cui si desidera ottenere la proprietà species_name del primo secondo elemento di livello superiore si può usare qualcosa come

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

vale la pena notare che il primo array non contiene un valore di "adeguatezza", in modo che non sarebbe in grado di accedere. In un ciclo foreach è possibile utilizzare un costrutto simile a questo:

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

conto solo array post all'interno quindi var_dump out side foreach, ma non funziona, se non ti dispiace ecco il mio script http://pastebin.com/jFxSkhzT –

+0

Stai sovrascrivendo la variabile $ kuantity ogni iterazione in il cappio. Quello che probabilmente stai vedendo è il valore dell'ultima iterazione. – Orangepill

+0

Modifica in '$ kuantity [] = conteggio ($ _ POST ['quantity'] [$ key]);' – Orangepill

0

Si può dare un'occhiata a PHP: RecursiveArrayIterator class

Questo vi permette di iterare multipli annidati ArrayIterator. Se non stai usando alcun ArrayIterator, dovresti prendere in considerazione la possibilità di provarli.

Problemi correlati