key

(PHP 4, PHP 5)

keyFetch a key from an array

Description

mixed key ( array &$array )

key() returns the index element of the current array position.

Parameters

array

The array.

Return Values

The key() function simply returns the key of the array element that's currently being pointed to by the internal pointer. It does not move the pointer in any way. If the internal pointer points beyond the end of the elements list or the array is empty, key() returns NULL.

Examples

Example #1 key() example

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

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name current($array)) {
    if (
$fruit_name == 'apple') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

The above example will output:

fruit1<br />
fruit4<br />
fruit5<br />

See Also

  • current() - Return the current element in an array
  • next() - Advance the internal array pointer of an array

Коментарии

Автор:
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.
?>
2011-10-17 15:20:49
http://php5.kiev.ua/manual/ru/function.key.html
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
?>
2013-10-23 14:43:31
http://php5.kiev.ua/manual/ru/function.key.html
Автор:
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 errorbut felt it might help someone else out there.
2014-04-23 19:05:14
http://php5.kiev.ua/manual/ru/function.key.html
In addition to FatBat's response, if you'd like to find out the highest key in an array (assoc or not) but don't want to arsort() it, take a look at this:

<?php

$arr 
= [ '3' => 14'1' => 15'4' => 92'15' => 65 ];

$key_of_max array_searchmax($arr) , $arr);

?>
2019-03-24 03:07:35
http://php5.kiev.ua/manual/ru/function.key.html
Автор:
(Editor note: Or just use the array_keys function)

Make as simple as possible but not simpler like this one :)

$k = array();
for($i = 0; $i < count($arr); $i++){
    $k[$i] = key($arr);
    next($arr);
}
2019-12-13 08:02:53
http://php5.kiev.ua/manual/ru/function.key.html

    Поддержать сайт на родительском проекте КГБ