php常用数组函数
2017-03-25 01:23
417 查看
php常用数组函数
大致需求前文以及简单介绍过,数据表按照时间生成,每天一张,每张表大约80W+数据量,加上需要获取多日的数据,例如获取连续5日登陆的用户。需求:玩家留存率、时间可选,开始时间以及结束时间
表头包含:新注册用户数量、次日留存、2日留存…30日留存
分析:
留存率公式:第N日该批用户登录数量/当日注册用户数量log表数据结构比较特殊,所有的log表字段一致,只用type去区分,字段为id、插入时间、用户ID、用户名称、type、参数1…参数20,实际参数代表的意义以及type的意思均为代码中常量定义。
因此如果单纯用mysql语句去操作,涉及跨表、联合、join等操作,实际测试单一一条语句均要超过6s以上,这种情况是完全无法接受的,因为查询时间可选,那么就导致如果筛选多日,随随便便都需要等待1分钟以上。
所以最终选择只用mysql去做最简单的查询操作,包含上尽可能多的的where语句限定并group by特定的key,其余全部使用php去操作数组完成,最后成果为每一条独立的sql语句耗时0.2-0.3s左右(全表无索引),包含php操作后最后输出单日数据约1s左右,因为此后台只是内部使用,已基本满足要求。
1.非常好用的Laravel内置数组辅助函数,array_pluck()
array_pluck(array $array,string $value_column_name[, string $key_column_name])
此函数可以将一个对象数组,按照你想要的方式提取出你指定的
$key=>$value形式Map图(键值对数组),或单纯的返回一列的一维数组。
第一个参数:需要提取的数组,一般用于Laravel查询构造器返回的查询结果数据,一个对象数组。
第二个参数:需要提取的值的列名
第三个参数(可选):需要提取的key的列名
例如(均为伪代码,只是示意用法):
原数组: [ { id:1, name:'hello', }, { id:2, name:'hello2', } ] array_pluck(array,'name'); 返回:['hello','hello2'] array_pluck(array,'name','id'); 返回: array( "1"=>"hello", "2"=>"hello2" );
2.最常用的array_filter()
具体定义可以自行查询w3school,一个小技巧就是如果不传入第二个func参数,则会为数组去除空元素,需要注意的一点是任何php认为为空的值均会过滤掉,例如0,false,‘’等3.可为混合数字字串排序的sort类函数,例如:ksort()、krsort()等
此类函数均含有第二个flag参数,可以设置检索排序模式,例如:0-5分钟、5-10分钟、30分钟、60分钟、120+分钟,如果出现顺序打乱后,只需要简单的调用sort类函数,至于是过滤按照key还是value就需要看实际需求了,第二个参数传入4,当做自然排序即可相关文章推荐
- php下几个常用的去空、分组、调试数组函数
- php学习笔记------[数组的常用函数]
- PHP常用开发函数解析之数组篇[未完]
- php常用函数之数组(一)
- PHP常用开发函数解析之数组篇
- PHP常用函数之数组篇
- php学习笔记------[数组的常用函数]
- PHP常用开发函数解析之数组篇[未完结]
- PHP常用函数(数组) 收集
- php 常用数组操作函数
- php中常用数组函数
- PHP数组中常用函数
- php开发中常用的数组函数
- PHP常用开发函数解析之数组篇[未完结]
- PHP常用的数组操作函数
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- PHP常用数组函数
- php 数组,常用函数
- 跟燕十八学习PHP-第十三天-常用数组函数讲解
- php 常用函数总结(数组,字符串,时间,文件操作)