key

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

keyFetch a key from an array

Опис

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

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

Параметри

array

The array.

Значення, що повертаються

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.

Журнал змін

Версія Опис
8.1.0 Виклик цієї функції для об'єктів є застарілим. Краще перетворити object в array, застосувавши get_mangled_object_vars(), або використати методи класу, який імплементує Iterator, наприклад ArrayIterator.
7.4.0 Примірники класів SPL тепер розглядаються як порожні об'єкти, які не мають властивостей, замість виклику метода інтерфейсу Iterator з такою ж назвою, як і в цієї функції.

Приклади

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

Поданий вище приклад виведе:

fruit1
fruit4
fruit5

Прогляньте також

add a note

User Contributed Notes 3 notes

up
414
lhardie
10 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
52
vinob44 at gmail dot com
11 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
21
FatBat
13 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.
?>
To Top