PHP 8.1.24 Released!

key

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

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

Описание

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

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

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

array

Массив.

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

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

Список изменений

Версия Описание
8.1.0 Вызов функции в объекте (object) объявлен устаревшим. Либо сначала преобразуйте объект (object) в массив (array) с помощью функции get_mangled_object_vars(), либо используйте методы, предоставляемые классом, реализующим интерфейс Iterator, например, ArrayIterator.
7.4.0 Экземпляры классов SPL теперь обрабатываются как пустые объекты, не имеющие свойств, вместо вызова метода Iterator с тем же именем, что и эта функция.

Примеры

Пример #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), "\n";
}
next($array);
}
?>

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

fruit1
fruit4
fruit5

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

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

add a note

User Contributed Notes 5 notes

up
400
lhardie
9 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
58
vinob44 at gmail dot com
9 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
18
FatBat
11 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
-6
Md Tahazzot
3 years ago
(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);
}
up
-19
danielmadsv at gmail dot com
4 years ago
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_search( max($arr) , $arr);

?>
To Top