key

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

key从数组中获取键

描述

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

key() 返回当前数组位置的索引元素。

参数

array

数组。

返回值

key() 函数只返回当前由内部指针指向的数组元素的键。它不会以任何方式移动指针。如果内部指针指向元素列表的末尾或数组为空,key() 将返回 null

变更日志

版本 描述
8.1.0 object 调用此函数已弃用。首先使用 get_mangled_object_vars()object 转换为 array,或者使用实现了 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

参见

添加笔记

用户贡献笔记 5 笔

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
10 年前
假设如果数组值是数字,并且数字包含 `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
12 年前
需要获取关联数组中最大/最高值的索引。
max() 只返回了值,没有索引,所以我这样做了。

<?php
reset
($x); // 可选的。
arsort($x);
$key_of_max = key($x); // 返回索引。
?>
Md Tahazzot
4 年前
(编辑说明:或者直接使用 array_keys 函数)

尽可能简单,但不要更简单,就像这样 :)

$k = array();
for($i = 0; $i < count($arr); $i++){
$k[$i] = key($arr);
next($arr);
}
danielmadsv at gmail dot com
5 年前
除了 FatBat 的回复,如果你想找出数组中(关联或非关联)的最高键,但不想对其进行 arsort(),请查看以下内容

<?php

$arr
= [ '3' => 14, '1' => 15, '4' => 92, '15' => 65 ];

$key_of_max = array_search( max($arr) , $arr);

?>
To Top