推广 热搜: 广场  Java  app  Word  营业  微信公众号  北京代理记账  商城  代理记账  商标交易 

php怎么找数组中的最大值 php数组原理?

   2023-05-06 企业服务招财猫200
核心提示:php数组原理?PHP数组的底层实现是分散列表,也称为hashTablPHP多维数组根据值搜索对应的键,你一般用什么办法?引言我们讲解了很多种PHP数组操作的引用场景。今天我们接着分享这方面的知识,说

php数组原理?

PHP数组的底层实现是分散列表,也称为hashTabl

PHP多维数组根据值搜索对应的键,你一般用什么办法?

引言我们讲解了很多种PHP数组操作的引用场景。今天我们接着分享这方面的知识,说一说对于多维数组,如何根据值搜索,并返回数组的索引值。

学习时间最开始我们习惯于跟随本能写代码,下意识地开始用for循环,对数组进行遍历,然后挨个比对,如果值相等,就返回索引值,如果没有匹配上,就是不存在。

假如原始数组是如下图一样的关联数组。

程序逻辑很简单,我们使用代码实现一下:

functionsearchForId($id,$array){foreach($arrayas$keygt$val){if($val[uid]$id){return$key}}returnnull}

这个函数接收一个值,与数组,如果匹配上就将数组的索引返回,如果不存在则返回null。因为第一层结构没有手动指定索引值,所以默认是从0开始的数字索引。

使用起来是这样的:

$idsearchForId(100,$userdb)

执行结束后,输出应该为0。

当然了,上面写的函数具有通用性,对于特殊的案例,我们应该随机应变。对于上述$userdb关联数组的结构,显然,使用PHP内置的函数操作起来,更为直观和快捷。

我们只需要先把uid列的元素全部取出,因为上层结构是默认数字索引,所以此处不用手动指定索引值;然后,在提取的数组中搜索值,使用array_search执行返回键。

总结为代码,就一行:

$keyarray_search(100,array_column($userdb,uid))

执行结果跟上面的searchForId函数一致。

深入讨论上面的函数和第二个解决方有问题,就是仅仅返回了第一个匹配的键。像下面这样写,肯定问题不大:

$keyarray_search(40489,array_column($userdb,uid))

但是如果在数组中有重复的值,而uid列也不唯一,要把所有的匹配结果都返回,该怎么做呢?不会又要修改searchForId函数,重新倒腾?

其实大可不必,PHP提供了这样的功能,只需改用array_keys函数即可:

$keysarray_keys(array_column($userdb,uid),40489)

你肯定经常使用array_keys函数用于返回整个数组的键,但是它的第二个参数,恰恰是在指定时,拥有可搜索的功能。这确实有些冷门。

再进一步。

上面返回的是数组对应的键,那如果想要键和值一并关联返回,一行代码能搞定吗?可以的,修改一下就行了,使用array_combine函数将键和值组装起来返回:

$keysarray_keys(array_combine(array_keys($userdb),array_column($userdb,uid)),40489)

写在最后本文通过特定的数组搜索需求,延伸到手动造轮子,把特殊的特性推向一般,并使用PHP内置的数组处理函数,进行功能裁切,简洁而高效。善用数组函数是硬功夫。

Happycoding:_)

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

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
合作伙伴
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  冀ICP备2023006999号-8