首页 » 网站推广 » php数组获取最后一个元素技巧_3分钟短文 PHP数组获取最后一个元素10个办法中哪个有错

php数组获取最后一个元素技巧_3分钟短文 PHP数组获取最后一个元素10个办法中哪个有错

访客 2024-11-05 0

扫一扫用手机浏览

文章目录 [+]

本日我们来说说,如何获取数组的末了一个元素,并且不删除它。

不要鄙视这个需求,没准儿你还做不对呢 :)

php数组获取最后一个元素技巧_3分钟短文  PHP数组获取最后一个元素10个办法中哪个有错

学习韶光

如果你首先想到了 array_pop,那很不幸,这个函数可以获取末了一个元素,却把数组变动了。

php数组获取最后一个元素技巧_3分钟短文  PHP数组获取最后一个元素10个办法中哪个有错
(图片来自网络侵删)

array_pop 弹出并返回 array 数组的末了一个单元,并将数组 array 的长度减一。
如果 array 为空(或者不是数组)将返回 NULL。
此外如果被调用不是一个数则会产生一个 Warning。

这显然不是我们要的结果。

实在实现一个需求的方法是多种多样的,我们考试测验利用 10 种不同的办法,来做到这一点。

$x = array_values(array_slice($array, -1))[0]

第一种,利用 array_slice 截取数组 $array 倒数第一个元素。
返回的是一个数组。
然后利用 array_values 重新编排索引值。
由于数组只有一个元素,那么索引值一定是 0。
原数组 $array 毫发无损。

$x = array_slice($array, -1)[0];

第二种方法没有考虑关联数组的情形,有可能索引 0 不存在。
以是容错性不好。

$x = array_pop((array_slice($array, -1)));

第三种方法,终于用到了 array_pop。
不过是在 array_slice 阶段的数组上利用。

$x = array_pop((array_slice($array, -1, 1)));

第四种方法,切实其实是有魔性了,比第三种办法比较,只是在 array_slice 截断的长度手动指定为 1。

$x = end($array); reset($array);

第五种方法,用到数组指针了。
end 返回末了一个元素。
然后须要手动规复指针位置到头部,以是调用了一次 reset 函数。
本方法有可能返回关联数组,而不能拿到值。

$x = end((array_values($array)));

第六种方法,严格地为了返回末了一个元素的值,利用 array_values 进行了索引重新编排。

$x = $array[count($array)-1];

第七种方法,直策应用索引了。
肯定是假设数组都是默认递增索引的数组,以是 count 获取的长度才有效。
该方法容错性差。

$keys = array_keys($array); $x = $array[$keys[count($keys)-1]];

第八种方法,是对第七种的不敷的修复。

$x = $array[] = array_pop($array);

第九种方法,我们须要明白,利用连等复制,array_pop 弹出数组的末了一个元素后,同时赋值给 $x。
这没问题。
赋值给原数组 $array[],这会春联系关系数组重新排定索引,以是有副浸染。

$x = $array[array_key_last($array)];

第十种,这种方法的容错性也极高,由于利用了 array_key_last,有效地考虑了关联数组的情形,而且结果也很取巧。
这个方法很棒。
但是只有 PHP 7.3 以上的版本才有。

写在末了

好了,大家好好消化一下上面10个方法的利害,取长补短,深度学习吧。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

标签:

相关文章

今日头条算法引领个化信息时代的变革

信息爆炸时代已经到来。每个人都是信息的接收者和传播者。面对海量的信息,人们往往感到无所适从。为了解决这一问题,各大互联网公司纷纷推...

网站推广 2025-01-31 阅读1 评论0

今日头条算法信息推荐的秘密武器

信息爆炸的时代已经来临。人们每天都会接触到大量的信息,而如何从这些信息中筛选出有价值的内容,成为了亟待解决的问题。今日头条算法作为...

网站推广 2025-01-31 阅读1 评论0

今日头条算法精准推荐背后的技术奥秘

信息爆炸的时代已经来临。我们每天都要面对海量的信息,如何从这些信息中筛选出自己感兴趣的内容,成为了每个人都关心的问题。今日头条作为...

网站推广 2025-01-31 阅读1 评论0