PHP 7.4.0RC6 Released!

key

(PHP 4, PHP 5, PHP 7)

key配列からキーを取り出す

説明

key ( array $array ) : mixed

key() は、 現在の配列位置における連想配列要素のキーを返します。

パラメータ

array

配列。

返り値

key() 関数は、内部ポインタが現在指している配列要素のキーを返します。 ポインタを移動することはありません。内部ポインタが要素リストの末尾にいる場合や配列が空の場合は key()NULL を返します。

変更履歴

バージョン 説明
7.0.0 array は常に値で渡されるようになりました。 このバージョンより前は、可能な場合は参照で、それ以外の場合は値で 渡されていました。

例1 key() の例

<?php
$array 
= array(
    
'fruit1' => 'リンゴ',
    
'fruit2' => 'オレンジ',
    
'fruit3' => 'ブドウ',
    
'fruit4' => 'リンゴ',
    
'fruit5' => 'リンゴ');

// このループは値が "リンゴ" である
// 全ての連想配列のキーを表示します
while ($fruit_name current($array)) {
    if (
$fruit_name == 'リンゴ') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

上の例の出力は以下となります。

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

参考

add a note add a note

User Contributed Notes 4 notes

up
333
lhardie
5 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
47
vinob44 at gmail dot com
6 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
10
FatBat
8 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
-1
danielmadsv at gmail dot com
7 months 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