ZetCode

PHP key() 函数

最后修改于 2025 年 3 月 13 日

PHP 的 key 函数用于获取当前数组元素的键。它是 PHP 数组指针函数的一部分,与内部指针协同工作。

基本定义

key 函数返回由内部数组指针当前指向的元素键。它不会移动指针。

语法: key(array $array): mixed。返回当前键,如果指针超出数组边界则返回 null。适用于索引数组和关联数组。

基本的 key() 示例

这演示了如何从简单的关联数组中获取当前键。

basic_key.php
<?php

$colors = [
    'red' => '#FF0000',
    'green' => '#00FF00',
    'blue' => '#0000FF'
];

$currentKey = key($colors);

echo "Current key: $currentKey"; 

内部指针从第一个元素开始。key 返回 'red',因为它是第一个元素的键。指针保持不变。

在循环中使用 key()

keynext 结合使用来遍历键。

key_in_loop.php
<?php

$fruits = [
    'apple' => 'red',
    'banana' => 'yellow',
    'grape' => 'purple'
];

while ($key = key($fruits)) {
    echo "Key: $key, Value: {$fruits[$key]}\n";
    next($fruits);
}

这将打印所有键值对。key 获取当前键,而 next 移动指针。当 key() 返回 null 时循环停止。

key() 与索引数组

key 与数字索引一样处理,就像处理关联键一样。

indexed_array.php
<?php

$numbers = [10, 20, 30, 40];

echo "First key: " . key($numbers) . "\n"; 

next($numbers);
echo "Second key: " . key($numbers); 

对于索引数组,key 返回数字索引。在此示例中,在调用 next 后,它会移至下一个索引 (1)。

key() 在数组修改后

数组修改会影响内部指针的位置。

modified_array.php
<?php

$data = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

next($data); // Move to 'b'
unset($data['b']); // Remove current element

echo "Current key after removal: " . key($data); 

当删除当前元素时,PHP 会将指针移至下一个元素。此处,在删除 'b' 后,指针移至 'c',然后 key 返回 'c'。

key() 与空数组

当在空数组上使用或指针位于数组末尾时,key 返回 null。

empty_array.php
<?php

$empty = [];
$end = ['a', 'b'];

end($end); // Move past last element

var_dump(key($empty)); 
var_dump(key($end));   

对于空数组或指针超出数组边界时,key 返回 null。此行为有助于检测何时应停止迭代。

最佳实践

来源

PHP key() 文档

本教程通过实际示例介绍了 PHP key 函数,展示了其在数组键检索场景中的用法。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PHP 数组函数