key

(PHP 4, PHP 5)

keyВыбирает ключ из массива

Описание

mixed key ( array &$array )

key() возвращает индекс текущего элемента массива.

Список параметров

array

Массив.

Возвращаемые значения

Функция key() просто возвращает ключ того элемента массива, на который в данный момент указывает внутренний указатель массива. Он не сдвигает указатель ни в каком направлении. Если внутренний указатель указывает вне границ массива или массив пуст, key() возвратит NULL.

Примеры

Пример #1 Пример использования key()

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

// этот цикл выведет все ключи ассоциативного массива,
// значения которых равны "apple"
while ($fruit_name current($array)) {
    if (
$fruit_name == 'apple') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

Результат выполнения данного примера:

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

Смотрите также

  • current() - Возвращает текущий элемент массива
  • next() - Передвигает внутренний указатель массива на одну позицию вперёд

Коментарии

Автор:
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

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