PHP 大会日本 2024

(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);
}

// 由于其值为 '0',当 arra('2'=>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