ScotlandPHP 2016

key

(PHP 4, PHP 5, PHP 7)

keyObtiene una clave de un array

Descripción

mixed key ( array &$array )

key() devuelve el elemento índice de la posición actual del array.

Parámetros

array

El array.

Valores devueltos

La función key() simplemente devuelve la clave del elemento del array que está apuntando actualmente el puntero interno. No desplaza el puntero de ninguna manera. Si el puntero interno señala más allá del final de la lista de elementos o el array está vacío, key() devuelve NULL.

Ejemplos

Ejemplo #1 Ejemplo de key()

<?php
$array 
= array(
    
'fruta1' => 'manzana',
    
'fruta2' => 'naranja',
    
'fruta3' => 'uva',
    
'fruta4' => 'manzana',
    
'fruta5' => 'manzana');

// Este ciclo muestra todas las claves del array asociativo
// donde el valor equivale a "manzana"
while ($nombre_fruta current($array)) {
    if (
$nombre_fruta == 'manzana') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

El resultado del ejemplo sería:

fruta1<br />
fruta4<br />
fruta5<br />

Ver también

add a note add a note

User Contributed Notes 4 notes

up
162
lhardie
2 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
36
vinob44 at gmail dot com
2 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
14
FatBat
4 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.
?>
up
-27
Anonymous
1 year ago
<?php
function generarCodigo($longitud) {
$key = '';
$pattern = '123456789ASKKDOQEMANDOASJDSO';
$max = strlen($pattern)-1;
for(
$i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
return
$key;
}
 


echo
generarCodigo(4)
echo
"-";
echo
generarCodigo(4);
echo
"-";
echo
generarCodigo(4);
echo
"-";
echo
generarCodigo(4);
?>
To Top