关于
归档
友链
猫咪
后台
切换模式
返回顶部
首页
说说
日常
开发
游戏
资源
虚拟货币
首页
说说
日常
开发
游戏
资源
虚拟货币
关于
归档
友链
猫咪
后台
PHP判断是否为索引数组、连续索引数组、关联数组、混合数组
开发
·
2018-08-05
LiesAuer
## 名称定义 - 索引数组:所有键名都为数值型,注意字符串类型的数字键名会被转换为数值型。 - 连续索引数组:键名是连续性的数字。 - 关联数组:所有键名都为字符串型,注意字符串类型的数字键名会被转换为数值型。 - 混合数组:键名既有数值型也有字符串型。 ## 代码 ```php /** * 判断数组是否为索引数组 */ function is_indexed_array($arr) { if (is_array($arr)) { return count(array_filter(array_keys($arr), 'is_string')) === 0; } return false; } /** * 判断数组是否为连续的索引数组 * 以下这种索引数组为非连续索引数组 * [ * 0 => 'a', * 2 => 'b', * 3 => 'c', * 5 => 'd', * ] */ function is_continuous_indexed_array($arr) { if (is_array($arr)) { $keys = array_keys($arr); return $keys == array_keys($keys); } return false; } /** * 判断数组是否为关联数组 */ function is_assoc_array($arr) { if (is_array($arr)) { // return !is_indexed_array($arr); return count(array_filter(array_keys($arr), 'is_string')) === count($arr); } return false; } /** * 判断数组是否为混合数组 */ function is_mixed_array($arr) { if (is_array($arr)) { $count = count(array_filter(array_keys($arr), 'is_string')); return $count !== 0 && $count !== count($arr); } return false; } ``` ## 耗时测试 ```php // 对百万数组进行千次的循环判断 $arr = []; for ($i = 0; $i < 1000000; $i++) { $j = 0; $key = mt_rand(1, 100) >= 50 ? $j++ : md5(time(true)); $arr[$key] = md5(time(true) . time(true)); } $t = microtime(true); for ($i = 0; $i < 1000; $i++) { is_indexed_array($t); } echo microtime(true) - $t, "s\n"; $t = microtime(true); for ($i = 0; $i < 1000; $i++) { is_assoc_array($t); } echo microtime(true) - $t, "s\n"; $t = microtime(true); for ($i = 0; $i < 1000; $i++) { is_continuous_indexed_array($t); } echo microtime(true) - $t, "s\n"; $t = microtime(true); for ($i = 0; $i < 1000; $i++) { is_mixed_array($t); } echo microtime(true) - $t, "s\n"; // 输出 // 0.0019919872283936s // 0.0020020008087158s // 0.0021991729736328s // 0.0019669532775879s ``` ## 测试结果 对百万数组进行千次的循环判断均为毫秒级
取消回复
提交评论
瞅一瞅叭
服务器推荐
RackNerd 2C2G $20.98/年(美国 隐藏款)
狗云 1C0.75G ¥150/年(香港 BGP)
热门文章
HumanMod - 免费的集N多功能于一身的HFF(人类一败涂地)插件
记抖音爬虫中所遇到的坑
设置网易邮箱大师为Win10默认邮件客户端
微信表情包工具【2023/05/04】更新
更改TLY本地代理端口
让Tauri前端部分调试如调试常规Web项目般丝滑
使用 v2rayN + SSTap 对 Win10 + WSL2 进行超简单易用的科学上网设置
最新评论
ask-to-you: 不是的,你去搜这东西 你就已经在关注了 你肯定买了
土木坛子: 有趣的灵魂。
土木坛子: 确实,真真假假,但不是每个人都能辨别出来,感谢博主指出来。
网友小宋: 之前一直在想,为什么1panel不集成钉钉等等机器人
优惠券网站: msdn,i tell you上面好像有纯净版的系统呀。。。博主...
PinHsin: pipreqs生成的模块和本地版本不一致是什么原因呢
优惠券平台: 写的很详细具体,学习到了,多谢博主的分享!⌇●﹏●⌇
关于站长
佛山
liesauer#liesauer.net
LiesAuer
CC BY-NC-SA 4.0
粤ICP备16094588号-1
Theme
Jasmine
by
Kent Liao