关于
归档
友链
猫咪
RSS
后台
切换模式
返回顶部
首页
说说
日常
开发
游戏
资源
虚拟货币
首页
说说
日常
开发
游戏
资源
虚拟货币
关于
归档
友链
猫咪
RSS
后台
PHP判断是否为索引数组、连续索引数组、关联数组、混合数组
开发
·
2018-08-05
·
更新于 2020-06-26
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)
最新评论
夸克网盘资源: 太先进了,我想实现,不知道怎么弄
左来: 是不是也可以跟wordpress似的汉语转拼音
dujun: 取标题对应的英文 slug 一直是我写文章的难题。它这个不做翻译...
夸克网盘资源: 马克一下,感觉正好需要这个爬虫。哈哈
xiaohu: 牛逼一
mo: 为什么群进不去
jiyouzhan: 这篇文章写得深入浅出,让我这个小白也看懂了!
关于站长
广东 佛山
liesauer#liesauer.net
LiesAuer
CC BY-NC-SA 4.0
粤ICP备16094588号-1
萌ICP备20245567号
Theme
Jasmine
by
Kent Liao