2012-04-22 27 views
8

Ecco una sezione mia array multidimensionale:PHP Prendi il primo valore di tutti gli array in un array multidimensionale

Array ( 
[0] => Array ([0] => Height [1] => 40) 
[1] => Array ([0] => Weight [1] => 15) 
[2] => Array ([0] => Ctr_Percent [1] => 15) 
) 

Quale sarebbe la sintassi sia solo per la stampa height, weight, e ctr_percent? Non voglio dire eco piace:

echo $array[0][0]; 
echo $array[1][0]; 

Esiste un modo per scorrere l'intero array multidimensionale e eco il primo valore di ciascun array bambino?

risposta

1
foreach ($main_array as $inner_array){ 
    echo $inner_array[0] . "\n"; 
} 
16

si Supponendo utilizzare PHP 5.3:

$first_elements = array_map(function($i) { 
    return $i[0]; 
}, $data); 

In caso contrario è necessario implementare una funzione di callback o semplicemente usare Plain Old foreach

+0

Penso che si debba notare che funziona solo se l'indice 0 è la chiave del primo elemento dell'array. Semplicemente non restituisce il primo valore del sottoarray, ma restituisce semplicemente il valore dell'elemento con la chiave 0 che potrebbe essere il primo elemento. – Christoph

+0

@Christoph l'elemento con l'indice 0 di una matrice indicizzata numericamente è semanticamente "il primo valore del sottoarray". Se gli array nidificati non sono indicizzati numericamente, non ha proprio molto senso parlare del loro "ordine". – zerkms

+0

php ha un ordine per ciascun array indipendente dalle sue chiavi, ad es. in [1 => 5,0 => 3] la matrice in indice numeric ma ancora la chiave 1 è il primo elemento non zero. Continuerai a ripetere questo ordine implicito usando foreach non nell'ordine ordinato delle chiavi. Non ci sono matrici semplici come in c come le lingue. – Christoph

2
foreach($array as $x) { 
    echo $x[0]."\n"; 
} 
7

Ecco una battuta:

array_map('array_shift', $array); 

tornerà:

Array 
(
    [0] => Height 
    [1] => Weight 
    [2] => Ctr_Percent 
) 

E qui è un altro:

array_combine(array_map('array_shift', $temp), array_map('array_pop', $temp)) 

tornerà:

Array 
(
    [Height] => 40 
    [Weight] => 15 
    [Ctr_Percent] => 15 
) 
+0

Sei un assaggio di vita –

0

Credo che la funzione il vostro ricerca è reset() esempio

array_map('reset', $array); 

o

foreach ($array as $subarray) 
    echo reset($subarray)."\n"; 

noti che questa funziona anche se 0 non è il primo indice dell'array. Per esempio. $a = [1=>5,0=>3]; echo reset($a); sarebbe ancora echo 5;.

Problemi correlati