2012-04-22 19 views
8

Aquí hay una sección de mi matriz multidimensional:PHP Obtener el primer valor de todas las matrices en una matriz multidimensional

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

¿Cómo sería la sintaxis sea sólo por la impresión height, weight y ctr_percent? No me refiero a ella como eco:

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

¿Hay una manera de iterar a través de toda la matriz multidimensional y eco a cabo el primer valor de cada matriz hijo?

Respuesta

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

que Suponiendo usar PHP 5.3:

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

De lo contrario es necesario implementar una función de devolución de llamada o simplemente utilizar el viejo y simple foreach

+0

Creo que debe tenerse en cuenta que eso solo funciona si el índice 0 es la clave del primer elemento de la matriz. Simplemente no devuelve el primer valor del subcampo simplemente devuelve el valor del elemento con la clave 0, que podría ser el primer elemento. – Christoph

+0

@Christoph el elemento con el índice 0 de una matriz indexada numéricamente es semánticamente "el primer valor del subcampo". Si las matrices anidadas no están indexadas numéricamente, realmente no tiene mucho sentido hablar sobre su "orden". – zerkms

+0

php tiene un pedido para cada matriz, independientemente de sus claves, p. en [1 => 5,0 => 3] la matriz en índice numérico pero aún la clave 1 es el primer elemento distinto de cero. Siempre iterará sobre este orden implícito utilizando foreach no en orden ordenado de las claves. No hay arreglos simples como en c idiomas similares. – Christoph

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

Aquí es una sola línea:

array_map('array_shift', $array); 

volverá:

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

Y aquí es otra:

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

volveremos: el

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

Eres el sabor de la vida –

0

Creo que la función de su buscando es reset() por ejemplo,

array_map('reset', $array); 

o

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

Tenga en cuenta que esto funciona incluso si 0 no es el primer índice de la matriz. P.ej. $a = [1=>5,0=>3]; echo reset($a); todavía sería echo 5;.

Cuestiones relacionadas