如何获得数组的最后一个键?


当前回答

不知道这是否会更快,但似乎更容易这样做,你避免错误不传递函数end()…

它只需要一个变量……多写一行代码,然后在需要时取消设置,这不是什么大问题。

$array = array(
    'first' => 123,
    'second' => 456,
    'last' => 789, 
);

$keys = array_keys($array);
$last = end($keys);

其他回答

我更喜欢

end(array_keys($myarr))

一个解决方案是使用end和key的组合(引用):

End()将数组的内部指针前进到最后一个元素,并返回它的值。 Key()返回当前数组位置的索引元素。

因此,像这样的一部分代码应该可以做到:

$array = array(
    'first' => 123,
    'second' => 456,
    'last' => 789, 
);

end($array);         // move the internal pointer to the end of the array
$key = key($array);  // fetches the key of the element pointed to by the internal pointer

var_dump($key);

将输出:

string 'last' (length=4)

也就是数组最后一个元素的键值。

完成此操作后,数组的内部指针将位于数组的末尾。正如注释中所指出的,您可能希望在数组上运行reset()以将指针带回数组的开头。

你可以用这个:

$array = array("one" => "apple", "two" => "orange", "three" => "pear");
end($array); 
echo key($array);

另一个解决方案是创建一个函数并使用它:

function endKey($array){
end($array);
return key($array);
}

$array = array("one" => "apple", "two" => "orange", "three" => "pear");
echo endKey($array);

不知道这是否会更快,但似乎更容易这样做,你避免错误不传递函数end()…

它只需要一个变量……多写一行代码,然后在需要时取消设置,这不是什么大问题。

$array = array(
    'first' => 123,
    'second' => 456,
    'last' => 789, 
);

$keys = array_keys($array);
$last = end($keys);

最好的解决方案,也可以使用内联:

end($arr) && false ?: key($arr)

这种解决方案只是表达式/语句,提供的性能很好,但不是最好的性能。

内联示例用法:

$obj->setValue(
    end($arr) && false ?: key($arr) // last $arr key
);

更新:在PHP 7.3+:使用(当然)新添加的array_key_last()方法。