2009-08-25 7 views
6

me gustaría recuperar la primera clave de esta matriz multidimensional.Recuperar la primera clave en la matriz multidimensional utilizando PHP

Array 
(
    [User] => Array 
     (
      [id] => 2 
      [firstname] => first 
      [lastname] => last 
      [phone] => 123-1456 
      [email] => 
      [website] => 
      [group_id] => 1 
      [company_id] => 1 
     ) 

) 

Esta matriz se almacena en $ this-> data.

Ahora estoy usando la clave ($ this-> data) que recupera 'User' como debería pero esto no se siente como la forma correcta de alcanzar el resultado.

¿Hay otras maneras de recuperar este resultado?

Gracias

+0

array_shift() también lo hará bien. – Wayne

Respuesta

7

Hay otras maneras de hacerlo, pero nada tan rápido y tan corto como el uso de key(). Cualquier otro uso es para obtener todas las claves. Por ejemplo, todos estos devolverán la primera clave en una matriz:

$keys=array_keys($this->data); 
echo $keys[0]; //prints first key 

foreach ($this->data as $key => $value) 
{ 
    echo $key; 
    break; 
} 

Como puede ver, ambos son descuidados.

Si quieres un oneliner, pero que desea protegerse de conseguir accidentalmente la tecla equivocada si el iterador no está en el primer elemento, intente esto:

reset($this->data); 

reset():

reinicio() rebobina el puntero interno de la matriz al primer elemento y devuelve el valor del primer elemento de la matriz.

Pero lo que estás haciendo me parece bien. Hay una función que hace exactamente lo que quieres en una línea; ¿Qué más podrías querer?

+0

Hmm Creo que usaré ese método en su lugar. De acuerdo con la clave manual PHP() se define como "" key() devuelve el elemento índice de la posición actual de la matriz. "" Entonces, si por alguna razón no estamos en la primera posición de la matriz, devolverá la clave incorrecta. – user103219

+0

Gracias, me quedaré con la tecla(). – user103219

+1

Lo siento, acabo de ver su última edición (creo que las ediciones tardan un minuto o más en publicarse) ... reset() era exactamente lo que estaba buscando. No sé por qué la matriz no estaría en la primera posición, sino que sería mejor que estar a salvo. – user103219

0

Utilice esta (PHP 5.5 +):

echo reset(array_column($this->data, 'id')); 
+0

¿Podría proporcionar una explicación con su código? Podría ayudar más a OP o futuros usuarios. – Bono

Cuestiones relacionadas