key

(PHP 4, PHP 5, PHP 7, PHP 8)

keyDevuelve una clave de un array asociativo

Descripción

key(array|object $array): int|string|null

key() devuelve la clave actual en el array array.

Parámetros

array

El array.

Valores devueltos

La función key() devuelve simplemente la clave del elemento del array que es actualmente apuntado por el puntero interno. Esta función no modifica en ningún caso la posición de este puntero. Si el puntero interno apunta un elemento situado después del final de la lista de elementos, o bien si el array está vacío, la función key() devolverá null.

Historial de cambios

Versión Descripción
8.1.0 O bien convertir el objeto en un array utilizando get_mangled_object_vars() primero, o utilizar los métodos proporcionados por una clase que implemente Iterator, tal como ArrayIterator.
7.4.0 A partir de PHP 7.4.0, las instancias de clases SPL son tratadas como objetos vacíos sin propiedades en lugar de llamar al método Iterator con el mismo nombre que esta función.

Ejemplos

Ejemplo #1 Ejemplo con key()

<?php
$array
= array(
'fruit1' => 'apple',
'fruit2' => 'orange',
'fruit3' => 'grape',
'fruit4' => 'apple',
'fruit5' => 'apple');

// Este ciclo muestra todas las claves
// cuyo valor es "apple"
while ($fruit_name = current($array)) {
if (
$fruit_name == 'apple') {
echo
key($array), "\n";
}
next($array);
}
?>

El ejemplo anterior mostrará :

fruit1
fruit4
fruit5

Ver también

add a note

User Contributed Notes 3 notes

up
418
lhardie
11 years ago
Note that using key($array) in a foreach loop may have unexpected results.

When requiring the key inside a foreach loop, you should use:
foreach($array as $key => $value)

I was incorrectly using:
<?php
foreach($array as $value)
{
$mykey = key($array);
}
?>

and experiencing errors (the pointer of the array is already moved to the next item, so instead of getting the key for $value, you will get the key to the next value in the array)

CORRECT:
<?php
foreach($array as $key => $value)
{
$mykey = $key;
}

A noob error, but felt it might help someone else out there.
up
51
vinob44 at gmail dot com
11 years ago
Suppose if the array values are in numbers and numbers contains `0` then the loop will be terminated. To overcome this you can user like this

<?php
$array
= array(
'0' => '5',
'1' => '2',
'2' => '0',
'3' => '3',
'4' => '1');

// wrong approach

while ($fruit_name = current($array)) {

echo
key($array).'<br />';
next($array);
}

// the way will be break loop when arra('2'=>0) because its value is '0', while(0) will terminate the loop

// correct approach
while ( ($fruit_name = current($array)) !== FALSE ) {

echo
key($array).'<br />';
next($array);
}
//this will work properly
?>
up
17
FatBat
13 years ago
Needed to get the index of the max/highest value in an assoc array.
max() only returned the value, no index, so I did this instead.

<?php
reset
($x); // optional.
arsort($x);
$key_of_max = key($x); // returns the index.
?>
To Top