php数字键怎么添加,PHP多维数组根据值搜索对应的键?
引言
我们讲解了很多种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 :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
GD是什么意思?
1.大写GD,在网络上被理解为勾搭2.GD-Game Designer(游戏设计师) 是游戏开发公司中的一种职称,主要职责是负责游戏项目的设计以及管理等策划工作。
Game Designer游戏设计师又称为游戏企划,游戏策划。游戏设计师就是设计一款游戏的内容,包括人物,装备,技能,玩法,交易,地图,任务,故事背景等等,可以说一款游戏的所有内容都是游戏设计师规划出来的。
游戏策划又有具体的分工,主要包括:剧情策划,系统策划,数值策划,关卡策划,脚本策划,执行策划等等。
3.国家广播电视总局,简称广电总局,再简称GD 4.大概是动漫高达的拼音缩写5.另外要介绍的GD是韩国超人气组合BigBang的队长G-Dragon(权志龙 권지용)的英文名缩写。龙龙无论是写歌还是唱歌,个人觉得都超级棒!!O(∩_∩)O~(力顶~~~)
并判断他们是否为偶数?
for($i=0;$i<10;$i++){
$num=rand();
if($num % 2 == 0){
echo $num.'偶数'.PHP_EOL;
}else{
echo $num.'奇数'.PHP_EOL;
}
我的世界电脑版怎么tp坐标?
在我的世界电脑版中,你可以使用以下命令来 TP(传送)到指定的坐标:
打开聊天窗口:在游戏中按下“T”键或者“/”键可以打开聊天窗口。
输入 TP 命令:在聊天窗口中输入以下命令:
php
Copy code
/tp <玩家名称> <x坐标> <y坐标> <z坐标>
其中,玩家名称是你要传送到的玩家名称,可以使用自己的名称或其他玩家的名称;x、y、z坐标是你要传送到的目标位置的坐标。
例如,要将玩家“Steve”传送到坐标(100, 64, -50)的位置,可以输入以下命令:
bash
Copy code
/tp Steve 100 64 -50
确认命令:在聊天窗口中输入完命令后,按下“Enter”键,命令将被执行,你将被传送到指定的坐标。
需要注意的是,TP命令需要在游戏的创造模式或管理员模式下才能使用。如果你不是管理员,可以在游戏开始前在服务器管理界面设置管理员权限。
电脑端有哪些特别好用的小工具?
推荐4个简单好用的小软件,日常生活都用的上。
Bandizip一个压缩软件。类似于360压缩软件,大小只有5.14M,完全免费,简单好用。目前支持的文件有zip,7z,rar,alz,egg,tar等主流压缩文件。而且它还可以制作exe格式自解压文件、支持unicode字符和批量分割压缩文件。
FastStone Capture一个截图的软件。通过它可以实现滚动截图,再也不用一张张截图啦!另外它还有录屏功能,软件只有3M哦!
键位设置:
软件功能齐全,可以缩放、旋转、减切、颜色调整,还可以从系统、浏览器或其他程序中导入图片、收藏夹等功能,稍加学习就可以灵活使用啦!
录屏功能:
唯一的缺点就是:这个好东西只能免费用30天。
XnipmacOS上的滚动截图软件。只有6.4M,完全免费。而且它拥有齐全的标注功能,简单易用,你可以对截取的图片进行标注。
点击上面的滚动截图按钮,可以实现滚动截图,生成长截图。
在对窗口进行截取时,它可以和Mac自带的截图软件一样截取窗口的阴影,除此之外,在截取窗口截图时,按住Shift就可以组合截取多个窗口。
Potplayer一个强大的播放软件,支持大量不同型号的3D眼镜,可以连接电视或电脑。它支持各种音频和视频格式,以及DVD、VCD和各种视频格式。而且加快播放速度的时候,不会失声哦收集、分类不易,如果觉得有用的话,点个赞,再来波关注哈哈~
收集、分类不易,如果觉得有用的话,点个赞,再来波关注哈哈~