php 取数组最后一个键,php - 如何获取数组中的最后一个键?

14个解决方案

556 votes

解决方案是使用reset()和reset()(引用)的组合:

reset()将数组的内部指针前进到最后一个元素,并返回其值。

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

因此,像这样的代码的一部分应该做的伎俩:

$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()以将指针返回到数组的开头。

Pascal MARTIN answered 2019-02-04T09:33:54Z

63 votes

虽然array_slice()似乎是最简单的,但它并不是最快的。

更快,更强大的替代方案是array_slice()

编辑罢工:这一说法尚未得到证实   评论中提到了相反的证据。 如果有的话   对于这张海报关于速度/效率的断言然后a   必须提供基准测试。

$last_key = key( array_slice( $array, -1, 1, TRUE ) );

Tadej Magajna answered 2019-02-04T09:34:29Z

48 votes

我更喜欢

end(array_keys($myarr))

Rutger van Baren answered 2019-02-04T09:34:51Z

29 votes

请使用:echo $array[count($array) - 1];

Aditya Choudhary answered 2019-02-04T09:35:12Z

19 votes

不知道这是否会更快或更快,但这样做似乎更容易,并且通过不将函数传递给end()来避免错误...

它只需要一个变量......编写一行代码并不是什么大不了的事,如果你需要,可以取消它。

$array = array(

'first' => 123,

'second' => 456,

'last' => 789,

);

$keys = array_keys($array);

$last = end($keys);

Ryan Hungate answered 2019-02-04T09:35:41Z

14 votes

自PHP 7.3(2018)以来,(最终)有这样的功能:[http://php.net/manual/en/function.array-key-last.php]

$array = ['apple'=>10,'grape'=>15,'orange'=>20];

echo array_key_last ( $array )

将输出

orange

Patryk Godowski answered 2019-02-04T09:36:05Z

8 votes

尝试使用array_pop和array_keys函数,如下所示:

$array = array(

'one' => 1,

'two' => 2,

'three' => 3

);

echo array_pop(array_keys($array)); // prints three

?>

codaddict answered 2019-02-04T09:36:26Z

3 votes

我还想为这个问题提供另一种解决方案。

假设您的所有键都是数字的,没有任何间隙,我首选的方法是计算数组,然后从该值减去1(以说明数组键从0开始的事实。

$array = array(0=>'dog', 1=>'cat');

$lastKey = count($array)-1;

$lastKeyValue = $array[$lastKey];

var_dump($lastKey);

print_r($lastKeyValue);

这会给你:

INT(1)   猫

answered 2019-02-04T09:37:08Z

3 votes

你可以用这个:

$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);

Atif Tariq answered 2019-02-04T09:37:31Z

3 votes

我刚从Xander那里获得了辅助函数,然后用以下答案对其进行了改进:

function last($array){

$keys = array_keys($array);

return end($keys);

}

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

echo last($arr);

echo $arr(last($arr));

Steve answered 2019-02-04T09:37:53Z

2 votes

$arr = array('key1'=>'value1','key2'=>'value2','key3'=>'value3');

list($last_key) = each(array_reverse($arr));

print $last_key;

// key3

voodoo417 answered 2019-02-04T09:38:08Z

2 votes

从PHP7.3开始,您可以使用array_key_last()直接访问数组(外层)中的最后一个键

这意味着您无需检索最终密钥的值:

移动数组指针(需要两行代码)或

排序,反转,弹出,计数,索引一系列键或任何其他tomfoolery

这个功能早就应该是阵列功能工具带的一个受欢迎的附加功能,可以提高性能,避免不必要的副作用,并实现干净/直接/直观的代码。

这是一个演示:

$array = ["a" => "one", "b" => "two", "c" => "three"];

if (!function_exists('array_key_last')) {

echo "please upgrade to php7.3";

} else {

echo "First Key: " , key($array) , "\n";

echo "Last Key: " , array_key_last($array) , "\n";

next($array); // move array pointer to second element

echo "Second Key: " , key($array) , "\n";

echo "Still Last Key: " , array_key_last($array);

}

输出:

First Key: a

Last Key: c //

Second Key: b

Last Key: c //

一些说明:

array_value_first()是array_key_first()的兄弟函数。

这两个函数都是“指针无知”。

如果数组为空,则两个函数都返回array_value_first()。

丢弃的兄弟功能(array_value_first()& array_value_last())也会提供指针无知访问书挡元素,但他们显然未能获得足够的投票来生活。

以下是一些讨论新功能的相关页面:

[https://laravel-news.com/outer-array-functions-php-7-3]

[https://kinsta.com/blog/php-7-3/#array-key-first-last]

[https://wiki.php.net/rfc/array_key_first_last]

mickmackusa answered 2019-02-04T09:39:52Z

-1 votes

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

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

在下载此解决方案之前,请告诉我您是否有更好的解决方案,可以内联并且具有相同或更好的性能。

内联示例用法:

$obj->setValue(

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

);

Mvorisek answered 2019-02-04T09:40:27Z

-2 votes

$array = array(

'something' => array(1,2,3),

'somethingelse' => array(1,2,3,4)

);

$last_value = end($array);

$last_key = key($array); // 'somethingelse'

这是有效的,因为PHP在内部为$ array移动它的数组指针

Scottymeuk answered 2019-02-04T09:40:49Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值