首页 » Web前端 » php数组搜刮技巧_3分钟短文 PHP多维数组搜索值就只能for轮回这样写更高效

php数组搜刮技巧_3分钟短文 PHP多维数组搜索值就只能for轮回这样写更高效

访客 2024-10-24 0

扫一扫用手机浏览

文章目录 [+]

学习韶光

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

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

php数组搜刮技巧_3分钟短文  PHP多维数组搜索值就只能for轮回这样写更高效

程序逻辑很大略,我们利用代码实现一下:

php数组搜刮技巧_3分钟短文  PHP多维数组搜索值就只能for轮回这样写更高效
(图片来自网络侵删)

function searchForId($id, $array) { foreach ($array as $key => $val) { if ($val['uid'] === $id) { return $key; } } return null;}

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

利用起来是这样的:

$id = searchForId('100', $userdb);

实行结束后,输出该当为0。

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

我们只须要先把 uid 列的元素全部取出,由于上层构造是默认数字索引,以是此处不用手动指定索引值;然后,在提取的数组中搜索值,利用 array_search 实行返回键。

总结为代码,就一行:

$key = array_search('100', array_column($userdb, 'uid'));

实行结果跟上面的 searchForId 函数同等。

深入谈论

上面的函数和第二个办理方法会有问题,便是仅仅返回了第一个匹配的键。
像下面这样写,肯定问题不大:

$key = array_search(40489, array_column($userdb, 'uid'));

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

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

$keys = array_keys(array_column($userdb, 'uid'), 40489);

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

再进一步。

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

$keys = array_keys(array_combine(array_keys($userdb), array_column($userdb, 'uid')),40489);写在末了

本文通过特定的数组搜索需求,延伸得手动造轮子,把分外的特性推向一样平常,并利用PHP内置的数组处理函数,进行功能裁切,简洁而高效。
善用数组函数是硬功夫。

Happy coding :_)

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

标签:

相关文章

QQ伪装黑客代码大全技术与风险警示

网络安全问题日益凸显。QQ作为一种流行的社交工具,成为了黑客攻击的主要目标之一。本文将针对QQ伪装黑客代码大全进行深入剖析,揭示其...

Web前端 2025-03-02 阅读1 评论0