(PHP 4, PHP 5, PHP 7, PHP 8)
key — Devuelve una clave de un array asociativo
key() devuelve la clave actual en el
array array.
arrayEl array.
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 .
| Versión | Descripción |
|---|---|
| 8.1.0 | O bien convertir el object 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. |
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
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.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
?>