2024 日本 PHP 研討會

key

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

key從陣列擷取鍵值

說明

key() 會傳回目前陣列位置的索引元素。

參數

陣列

該陣列。

傳回值

key() 函式單純傳回目前內部指標指向的陣列元素的鍵值。它不會以任何方式移動指標。如果內部指標指向元素列表的末尾之後,或者陣列為空,key() 會傳回 null

更新日誌

版本 說明
8.1.0 物件 呼叫此函式已被棄用。請先使用 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

參見

新增註釋

使用者貢獻的註釋 3 則註釋

lhardie
10 年前
請注意,在 foreach 迴圈中使用 key($array) 可能會產生非預期的結果。

當在 foreach 迴圈內需要鍵值時,您應該使用
foreach($array as $key => $value)

我之前錯誤地使用了
<?php
foreach($array as $value)
{
$mykey = key($array);
}
?>

並且遇到了錯誤(陣列的指標已經移動到下一個項目,因此您得到的不是 $value 的鍵值,而是陣列中下一個值的鍵值)

正確的寫法
<?php
foreach($array as $key => $value)
{
$mykey = $key;
}

一個新手錯誤但覺得可能可以幫助到其他人
vinob44 at gmail dot com
11 年前
假設如果陣列值是數字,且數字包含 `0`,則迴圈將會終止。為了克服這個問題,您可以這樣使用

<?php
$array
= array(
'0' => '5',
'1' => '2',
'2' => '0',
'3' => '3',
'4' => '1');

// 錯誤的做法

while ($fruit_name = current($array)) {

echo
key($array).'<br />';
next($array);
}

// 這種方式會在 arra('2'=>0) 時中斷迴圈,因為它的值是 '0',while(0) 將會終止迴圈

// 正確的做法
while ( ($fruit_name = current($array)) !== FALSE ) {

echo
key($array).'<br />';
next($array);
}
//這樣就能正常運作
?>
FatBat
13 年前
需要取得關聯陣列中最大值的索引。
max() 只會回傳值,沒有索引,所以我改用這個方法。

<?php
reset
($x); // 可選。
arsort($x);
$key_of_max = key($x); // 返回索引。
?>
To Top