精华内容
下载资源
问答
  • php常用数组函数

    千次阅读 2017-03-25 01:23:26
    php常用数组函数

    php常用数组函数

    大致需求前文以及简单介绍过,数据表按照时间生成,每天一张,每张表大约80W+数据量,加上需要获取多日的数据,例如获取连续5日登陆的用户。

    需求:玩家留存率、时间可选,开始时间以及结束时间

    表头包含:新注册用户数量、次日留存、2日留存…30日留存

    分析:

    1. 留存率公式:第N日该批用户登录数量/当日注册用户数量
    2. 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常用数组函数

    千次阅读 2016-12-23 22:45:23
    一、数组操作的基本函数 数组的键名和值 array_values($arr) 获得数组的值 array_keys($arr) 获得数组的键名 array_flip($arr) 数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple",$arr...
    一、数组操作的基本函数
    数组的键名和值
    array_values($arr)     获得数组的值
    array_keys($arr)     获得数组的键名
    array_flip($arr)     数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
    in_array("apple",$arr)     在数组中检索apple
    array_search("apple",$arr)     在数组中检索apple ,如果存在返回键名
    array_key_exists("apple",$arr)     检索给定的键名是否存在数组中
    isset($arr[apple])     检索给定的键名是否存在数组中

    数组的内部指针
    current($arr)      返回数组中的当前单元
    pos($arr)           返回数组中的当前单元
    key($arr)           返回数组中当前单元的键名
    prev($arr)         将数组中的内部指针倒回一位
    next($arr)         将数组中的内部指针向前移动一位
    end($arr)         将数组中的内部指针指向最后一个单元
    reset($arr)       将数组中的内部指针指向第一个单元
    each($arr)       将返回数组当前元素的一个键名/值的构造数组,并使数组指针向前移动一位
    list($key,$value)=each($arr)    获得数组当前元素的键名和值

    数组和变量之间的转换
    extract($arr)     用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
    注意:(第二个参数很重要,可以看手册使用)     使用方法 echo $a
    compact(var1,var2,var3)     用给定的变量名创建一个数组

    二、数组的分段和填充
    数组的分段
    array_slice($arr,0,3)     可以将数组中的一段取出,此函数忽略键名
    array_splice($arr,0,3,array("black","maroon"))     可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除

    分割多个数组
    array_chunk($arr,3,TRUE)     可以将一个数组分割成多个,TRUE为保留原数组的键名

    数组的填充
    array_pad($arr,5,'x')     将一个数组填补到制定长度

    三、数组与栈
    array_push($arr,"apple","pear")     将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
    array_pop($arr)     将数组栈的最后一个元素弹出(出栈)

    四、数组与列队
    array_shift($arr)     数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改为从零技术,文字键名不变)
    array_unshift($arr,"a",array(1,2))     在数组的开头插入一个或多个元素

    五、回调函数
    array_walk($arr,'function','words')     使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
    array_map("function",$arr1,$arr2)   可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
    array_filter($arr,"function")      使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变
    array_reduce($arr,"function","*")     转化为单值函数(*为数组的第一个值)

    六、数组的排序
    通过元素值对数组排序
    sort($arr)     由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
    rsort($arr)     由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
    usort($arr,"function")     使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
    asort($arr)     由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
    arsort($arr)    由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
    uasort($arr,"function")     使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序

    通过键名对数组排序
    ksort($arr)     按照键名正序排序
    krsort($arr)     按照键名逆序排序
    uksort($arr,"function")     使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)

    自然排序法排序
    natsort($arr)     自然排序(忽略键名)
    natcasesort($arr)     自然排序(忽略大小写,忽略键名)

    七、数组的计算
    数组元素的求和
    array_sum($arr)     对数组内部的所有元素做求和运算

    数组的合并
    array_merge($arr1,$arr2)     合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会做覆盖操作,而是附加到后面)
    “+”$arr1+$arr2     对于相同的键名只保留后一个
    array_merge_recursive($arr1,$arr2)      递归合并操作,如果数组中有相同的字符串键名,这些值将被合并到一个数组中去。如果一个值本身是一个数组,将按照相应的键名把它合并为另一个数组。当数组 具有相同的数组键名时,后一个值将不会覆盖原来的值,而是附加到后面

    数组的差集
    array_diff($arr1,$arr2)     返回差集结果数组
    array_diff_assoc($arr1,$arr2,$arr3)     返回差集结果数组,键名也做比较

    数组的交集
    array_intersect($arr1,$arr2)     返回交集结果数组
    array_intersect_assoc($arr1,$arr2)     返回交集结果数组,键名也做比较

    八、其他的数组函数
    range(0,12)     创建一个包含指定范围单元的数组
    array_unique($arr)     移除数组中重复的值,新的数组中会保留原始的键名
    array_reverse($arr,TRUE)     返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
    //srand((float)microtime()*10000000)      随机种子触发器
    array_rand($arr,2)     从数组中随机取出一个或 多个元素
    shuffle($arr)     将数组的顺序打乱
    展开全文
  • php常用数组函数总结

    千次阅读 2018-05-22 07:40:44
    数组函数1.array_key_change_case($arr,$case):将数组所有的键转化为大写或者小写,$case可设为CASE_LOWER或者CASE_UPPER。2.array_chunk($arr,$number):把数组分割为有特定($number)个元素的数组块。3.array_...

    数组函数

    1.array_key_change_case($arr,$case):将数组所有的键转化为大写或者小写,$case可设为CASE_LOWER或者CASE_UPPER。

    2.array_chunk($arr,$number):把数组分割为有特定($number)个元素的数组块。

    3.array_column($arr,$column):返回数组中某一个单列的值。

    4.array_combine($arr1,$arr2):合并两个数组为一个新数组,并把$arr1的值作为键,$arr2的值作为值。

    5.array_count_values(Array('a','b','c','a','b')):返回数组中所有值出现的次数,函数执行结果:Array ( [a] => 2 [b] => 2 [c] => 1 )。

    6.array_diff($arr1,$arr2):返回两个数组的差集(只比较键值)

    7.array_diff_key($arr1,$arr2):返回两个数组的差集(只比较键名),该数组返回在$arr1中,但不在 $arr2中的元素。

    8.array_intersect($arr1,$arr2):比较数组,返回两个数组的交集。

    9.array_key_exists($key,$arr):查询数组中是否存在指定的键名。

    10.array_keys($arr):返回数组中所有的键名,并且组成一个新数组。

    11.array_map('myFunction',$arr):将用户自定义函数作为回调函数作用在数组的每个元素上,返回一个新数组。

    12.array_merge($arr1,$arr2,$arr3.....):合并一个或多个元素为一个新数组,如果两个或更多元素有相同的键名,后者会覆盖前者。

    13.array_merge_recursive($arr1,$arr2,$arr3.....):合并一个或多个元素为一个新数组,如果两个或更多元素有相同的键名,后者不会覆盖前者,而会递归创建一个新数组。

    14.array_pop($arr):删除数组中的最后一个元素(出栈)。

    15.array_product(Array(1,2,3)):计算数组中所有值的乘积。

    16.array_push($arr,'a','b'):将一个或多个元素插入数组的末尾(入栈)。

    17.array_rand($arr,number):返回一个包含随机键名的数组。

    18.array_replace($arr1,$arr2):后面数组的值替换前面数组的值。

    19.array_reverse($arr1,$arr2):将数组中的元素逆序输出(反转)

    20.array_search('a',$arr):在数组中搜索给定的键名,成功的话返回它的键名。

    21.array_shift():删除数组中的第一个元素,并返回被删除元素的值。

    22.array_sum():返回数组中所有值的和。

    23.array_unshift():在数组开头插入一个或多个元素。

    24.array_values():返回数组中所有的值。

    25.array_walk($arr,'myFunction'):对数组中的每个成员应用自定义函数。

    26.arsort():对关联数组按照键值降序排列。

    27.asort():对关联数组按照键值升序排列。

    28.current():返回数组中的当前元素(第一个指针指向的元素)。

    29.in_array('a',$arr):搜索数组中是否存在指定的值。

    30.krsort():把数组按照键名降序排列。

    31.ksort():把数组按照键名降升序序排列。

    32.list():把数组中的值赋给一些变量。list($a,$b,$c) = array(1,2,3)。

    展开全文
  • PHP常用数组函数

    万次阅读 2020-09-13 18:38:46
    数组中元素指针的移动 next:向后移动,指向下一个元素 prev:向前移动,指向前一个元素 end:指向最后一个元素 reset:复位,重新指向第一个元素 键、值的相关操作 key:获取数组当前元素的键 current/pos:获取...

    数组中元素指针的移动

    next:向后移动,指向下一个元素
    prev:向前移动,指向前一个元素
    end:指向最后一个元素
    reset:复位,重新指向第一个元素
    

    键、值的相关操作

    key:获取数组当前元素的键
    current/pos:获取数组当前元素的值
    array_keys:获取所有的键
    array_values:获取所有的值,并为其建立数字索引
    array_key_exists/key_exists:判断给定的键是否在数组中
    in_array:判断给定的值是否在数组中
    array_search:根据值返回对应的键名
    array_count_values:统计数组中所有的值出现的次数
    

    添加删除元素

    array_shift:将数组开头的元素移出数组
    array_unshift:向数组开头添加一个或更多个元素
    array_push:向数组末尾压入一个或多个元素
    array_pop:弹出数组末尾的一个元素
    

    排序相关

    shuffle:将数组打乱(转换为索引数组)
    sort:对数组进行排序
    rsort:对数组进行逆向排序
    asort:对数组进行排序并保持索引关系
    arsort:对数组进行逆向排序并保持索引关系
    natsort:用自然顺序算法对数组进行排序
    natcasesort:natsort忽略大小写的版本
    ksort:对数组按照键名进行排序
    krsort:对数组按照键名逆向排序
    usort:使用用户自定义的比较函数对数组的值进行排序
    uasort:使用用户自定义的比较函数对数组的值进行排序并保持索引关系
    uksort:使用自定义的比较函数对数组的键名进行排序
    

    元素运算

    array_sum:计算数组中所有值的和
    array_product:计算数组中所有值的乘积
    count/sizeof:计算数组中元素的个数
    

    数组相关

    range:建立一个包含指定范围单元的数组(可以指定步幅)
    compact:创建一个包含变量与其值的数组
    extract:从数组中将变量导入到当前的符号表(与compact功能相反)
    array:新建一个数组
    array_merge:合并一个或多个数组(关联会覆盖,索引会重新索引,若想保留索引可以使用'+')
    array_merge_recursive:递归合并一个或多个数组
    array_combine:用一个数组的值作为键名,另一个数组的值作为值创建数组
    

    其他

    array_chunk:将数组分割成指定长度的小数组
    array_map:将回调函数作用到每个元素上,返回处理的结果数组(新数组)
    array_walk:将回调函数作用到每个元素上(会改变原数组),返回真假
    array_filter:使用回调函数过滤数组(回调函数返回真的才会出现在结果中)
    array_flip:返回交换键和值后的新数组
    array_rand:随机从数组中抽取一个或多个元素的键
    array_replace:使用后面的数组中元素替换第一个数组中的元素
    array_reverse:返回一个单元顺序相反的数组(关联数组会保持键值对应,索引数组需要传递第二个参数)
    array_unique:移出数组中重复的值
    
    展开全文
  • php里面的常用数组函数: $arr=[1,5,68,15,45,23,78,95,2,6]; $arr1=[1,5,6,2]; $arrs=array( 0=>array(1,5,68,15,4), 1=>array(15,45,23,78), 2=>array(23,78,95,2,6), 3=>...
  • php常用数组函数

    千次阅读 2016-08-04 08:58:00
    数组常用函数(一)  ① in_array(): 检查数组中是否存在某个值; 有两个参数,第一个参数是要查找的值,第二个参数是数组名,返回值为布尔,找到则true否则false  ② array_search ():在数组中搜索给定的...
  • 指针 指针数组 指针数组的指针 数组指针 数组指针的数组 函数指针 函数指针数组 指向函数指针数组的指针
  • Clickhouse 数组函数 高阶函数

    千次阅读 2020-08-31 11:24:18
    数组函数的概述: Clickhouse> select version(); SELECT version() ┌─version()───┐ │ 20.8.1.4447 │ └─────────────┘ 1 rows in set. Elapsed: 0.003 sec. Clickhouse> ...
  • 指针数组 首先从名字就可以知道这是一个数组,是存放指针的数组。 先看几种指针数组: int * 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
  • Excel中的数组函数

    千次阅读 2018-11-15 20:18:22
    ・光标进入当前单元格, Ctrl + Shift + Enter,可以给数组函数加上花括号 } (选中当前单元格, 光标进入Excel上面的【公式栏】, Ctrl + Shift + Enter,可以给数组函数加上花括号 {})  ・光标进入Excel...
  • PHP数组函数和字符串函数

    千次阅读 2016-11-22 00:02:28
    (一)PHP核心数组函数 与数组索引与值相关的函数 1、array_keys():把数组的索引下标合并到一个新数组中; 2、array_values():把数组的值合并到一个新数组中; 与数据结构相关的函数 3、array_shift():把...
  • SAS中常见的数组函数

    千次阅读 2017-04-22 21:56:49
    SAS中常见的数组函数: dim dimk hbound hboundk lbound lboundk 数组函数计萁数组的维数、上下界,有利于写出可移植的程序,数组函数包括: dim(x) 求数组x第一维的元素的个数 dimk(x) 求数组x第k维的元素的...
  • php数组函数大全

    万次阅读 2018-05-11 09:02:11
    一、数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple&...
  • 帆软高级函数应用之数组函数

    千次阅读 2018-08-23 20:32:17
    数组函数indexofarray,GREPARRAY,UNIQUEARRAY,RANGE 1.indexofarray INDEXOFARRAY(array,index):返回数组array的第index个与元素。 示例: INDEXOFARRAY(["第一个","第二个","第三个&...
  • ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。 示例: ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7]. ADDARRAY([3,4, 1, ...
  • 我定义了一个未知个数的数组,然后输入了数组的个数,我应该用这个数组调用函数
  • Oracle 自定义字符串转换数组函数

    千次阅读 2016-12-22 22:12:00
    Oracle 自定义字符串转换数组函数
  • PHP常用数组(Array)函数整理

    千次阅读 2019-04-23 14:40:30
    一、数组操作的基本函数 数组的键名和值 array_values($arr); 获得数组的值 array_keys($arr); 获得数组的键名 array_flip($arr); 数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple",$arr...
  • C++中的数组函数

    千次阅读 2019-09-05 23:55:27
       #include <iostream> const int size=9;...//数组累加函数 int main() { using namespace std; int OneArray[size]={1,2,3,4,5,6,7,8,9}; int sum=sum_arr(OneArray,size);...
  • IDL数组函数

    千次阅读 2016-12-13 13:20:49
  • 二级指针,二维数组函数参数传递

    千次阅读 2018-05-14 12:05:55
    数组指针作为函数形参时,能作为函数实参的是二维数组数组指针 当二维数组作为函数形参时,能作为函数实参的是二维数组数组指针 当指针数组作为函数形参时,能作为函数实参的是指针数组,二级指针,一级指针的...
  • PHP - 数组函数 - 收集

    千次阅读 2019-04-23 09:57:39
    一、数组操作的基本函数 //标红为中高级php开发者的标志--个人认为 数组的键名和值array_values($arr);获得数组的值 //如果已经是索引数组,则无效果/,不过确实能保证一定为索引数组 备注: ...
  • PHP数组函数有哪些?

    千次阅读 2020-03-28 20:05:21
    本文整理了PHP数组中常见和不常见的函数,希望能对您有所帮助。写作不易,还望支持。
  • 有趣的JavaScript原生数组函数

    万次阅读 2016-08-25 15:19:31
    在JavaScript中,创建数组可以使用Array构造函数,或者使用数组直接量[],后者是首选方法。Array对象继承自Object.prototype,对数组执行typeof操作符返回object而不是array。然而,[] instanceof Array也返回true。也...
  • c语言中如何返回一个数组函数

    万次阅读 2018-05-17 00:10:03
    比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:int*int_array_create(intn)//参数n为数组元素个数 { int*r; if(n&lt;=0.....
  • Jquery数组函数

    千次阅读 2010-09-21 09:53:00
    jquery下json数组的操作用法实例: jquery中操作JSON数组的情况中遍历方法用的比较多,但用添加移除这些好像就不是太多了。 试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中...
  • 86. LotusScript中的数组函数

    千次阅读 2014-12-16 11:03:44
    R6对LotusScript有一些改进和增强,...但在编程实践中,还有一些对数组的操作LotusScript没有提供原生的函数,好在基本上都能自己编写。下面的函数中用到的常数都在lsconst.lss或lserr.lss里定义,在脚本前要附加%INCLU
  • 我的二维数组具体的个数在键盘输入,怎么在输入n和m的值后调用函数,谢谢![图片](https://img-ask.csdn.net/upload/201703/22/1490151078_791611.jpg)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,976,829
精华内容 790,731
关键字:

常用的数组函数