Pregunta Obtener el primer elemento de una matriz


Tengo una matriz:

array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )

Me gustaría obtener el primer elemento de este conjunto. Resultado Esperado: cuerda  apple 

Un requisito: no se puede hacer con pasar por referencia, asi que array_shift no es una buena solución

¿Cómo puedo hacer esto?


852
2017-12-17 12:26


origen


Respuestas:


Respuesta original, pero costosa (O (n)):

array_shift(array_values($array));

En O (1):

array_pop(array_reverse($array));

Editado con sugerencias de comentarios para otros casos de uso, etc ...

Si modifica (en el sentido de restablecer punteros de matriz) de $array no es un problema, puede usar:

reset($array);

Esto debería ser teóricamente más eficiente, si se necesita una matriz de "copia":

array_shift(array_slice($array, 0, 1)); 

Con PHP 5.4+ (pero podría causar un error de índice si está vacío):

array_values($array)[0];

1095
2017-09-22 16:04



Como Mike señaló (de la manera más fácil posible):

$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )
echo reset($arr); //echoes "apple"

Si quiere obtener la clave: (ejecutarla después del reinicio)

echo key($arr); //echoes "4"

De Documentación de PHP:

mezclado  Reiniciar (array y $ array );

Descripción:

Reiniciar() rebobina array puntero interno al primer elemento y devuelve el valor del primer elemento de la matriz, o FALSE si la matriz es   vacío.


719
2017-11-15 03:33



$first_value = reset($array); // First Element's Value
$first_key = key($array); // First Element's Key

Espero que esto ayude. :)


243
2018-06-08 06:01



$arr = array( 9 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // echoes 'apple'

Si no quiere perder la posición actual del puntero, simplemente cree un alias para la matriz.


85
2017-12-17 12:31



Puedes obtener N-ésimo elemento con una "lista" de construcción de lenguaje:

// 1st item
list($firstItem) = $yourArray;

// 1st item from an array that is returned from function
list($firstItem) = functionThatReturnsArray();

// 2nd item
list( , $secondItem) = $yourArray;

con la función array_keys puede hacer lo mismo con las claves:

list($firstKey) = array_keys($yourArray);
list(, $secondKey) = array_keys($yourArray);

63
2018-04-12 13:40



simplemente current($array) puede resolver


52
2017-09-12 08:07



PHP 5.4+:

array_values($array)[0];

50
2018-04-23 14:50



Suponer:

$array = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );

Solo usa:

$array[key($array)]

para obtener el primer elemento o

key($array)

para obtener la primera clave.

O puede desvincular el primero si desea eliminarlo.


26
2017-08-09 12:23



Algunas matrices no funcionan con funciones como list, reset o current. Tal vez son matrices "falsas", implementando parcialmente ArrayIterator, por ejemplo.

Si desea obtener el primer valor independientemente de la matriz, puede cortocircuitar un iterador:

foreach($array_with_unknown_keys as $value) break;

Su valor estará disponible en $value y el ciclo se romperá después de la primera iteración. Esto es más eficiente que copiar una matriz potencialmente grande a una función como array_unshift (array_values ​​($ arr)).

Puedes agarrar la llave de esta manera también:

foreach($array_with_unknown_keys as $key=>$value) break;

Si llamas esto desde una función, simplemente regresa temprano:

function grab_first($arr) {
    foreach($arr as $value) return $value;
}

19
2017-07-22 20:41



Simplemente hazlo:

array_shift(array_slice($array,0,1));

13
2017-12-15 10:38