zoukankan      html  css  js  c++  java
  • php自有函数-数组-排序篇

    1 数据操作基本函数
    array_values($arr) 获取数组值
    array_keys($arr) 获取数组键值
    array_flip($arr) 值与键进行互换(用于去重,有重复前面被后面覆盖)
    is_array($val,$arr) 判断是否在数组中
    array_search($val,$arr) 在数组中检索指定值,返回键名
    array_key_exists($val,$arr) 检索指定键值是否存在数组中
    isset($arr[$val]) 判断指定键值是否存在

    1 explode($sep, $str) 将字符串通过分隔符转化为数组

    2 strpos() 函数查找字符串在另一字符串中第一次出现的位置。
    3 array_pop() 函数删除数组中的最后一个元素。 返回数组的最后一个值。如果数组是空的,或者非数组,将返回 NULL。
    4 array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。
    5 array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
    6 array_diff() 函数返回两个数组的差集数组【 可用一个或任意多个数组与第一个数组进行比较】
    7 array_reverse 函数——颠倒数组元素顺序 【数组顺序颠倒】

    数组去重及其他功能数组
    array_unique($arr); 【移除数组中重复的值,新的数组中会保留原始的键名】
    array_reverse($arr,TRUE); 【数组进行倒序排序,返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名】
    shuffle($arr) 【打乱数组顺序】
    array_rand($arr) 【函数从数组中随机选出一个或多个元素,并返回。】
    array_combine($arrk,$arrv) 【生成数组,前数组为键名,后数组为键值】

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

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

    数组计算
    求和
    array_sum($arr) 数组值进行相加
    合并数组
    array_merge($arr1,$arr2) 【合并两个数组,如果键值重复,后面则覆盖前面的,注:如果两个数组中,有一个是数字索引,那么键值会重新排序】
    $arr1+$arr2 【合并两数组,如果键值出现重复,以前面值覆盖后面值】
    array_merge_recursive($arr1,$arr2) 【合并两数组,如何键值重复,在键值重复的数组将生成另外数组,即一维数组转为二维数组】

    数组分段
    array_slice($arr,0,3) 取出数组中的一段数组,忽略键值
    array_splice($arr,0,3,array('black','maroon') 从数组中移除元素,并用新元素取代它

    分割多个数组
    array_chunk($arr,3,true) 把数组分割为带有3个元素的数组,并保留键值

    数组与栈
    array_push($arr,"apple","pear"); 将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
    array_pop($arr); 将数组栈的最后一个元素弹出(出栈),返回元素
    队列
    array_shift($arr); 将数组的首个元素弹出,并返回被弹出的元素
    array_unshift($arr,"a",array(1,2));在数组的开头插入一个或多个元素

    回调函数
    array_walk($arr,'function','words');使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
    array_filter($arr,"function");使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变

    四 数组:
    1)数据输出
    list()=array() 将数组分解为单个变量
    range(1,31) 返回一个整数范围数组
    【迭代输出数组】
    reset($array)
    while(list($key,$value) = each($array)){}

    2)方法回调
    array_map('fun',$words) 使用函数遍历处理元素(使用值 进行操作)
    array_walk($arr,'fun'); 使用方法遍历元素(使用引用值进行操作)【大数据处理有优势】
    array_filter($arr,'fun') 用回调函数处理数组中的各个元素 【用于过滤元素】

    3)数组处理
    array_splice($arr,0,2,$re_arr) 删除指定长度的数组,并替换
    array_pad($arr,5,'str') 扩展数组至5个元素
    array_merge() 数组追加 $arr1+$arr2 = $arr1
    array_flip() 数组键值互换 【高级】
    【array_flip是反转数组键和值的函数,他有个特性就是如果数组中有二个值是一样的,那么反转后会保留最后一个键和值.利用这个特性我们用他来间接的实现数组的去重】
    array_unique -- 移除数组中重复的值 【高级】
    【注意键名保留不变。array_unique()先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array中同一个值的第一个出现的键名会被保留。】
    array_reverse() 倒序数组
    shuffle($arr) 打乱随机排序

    4)数组查找,排序
    array_search() 查找数组元素并返回键值
    usort() 使用自定义的函数排序

    5)数组的交,并,差集
    获取两数组并集 array_unique($array_merge($a,$b))【数值并集】
    求数值间的交集 array_intersect($a,$b)
    求数组的差集 array_diff($a,$b);简单差集{返回a中与b的差集}
    求数组的对称差集 array_merge(array_diff($a,$b),array_merge($b,$a)) 【a->b与b->a 差集的合集】
    忽略大小的简单差集 array_diff(array_map('strtolower',$old),array_map('strtolower',$new));

    php 数组函数
    array_change_key_case -- 返回字符串键名全为小写或大写的数组
    array_chunk -- 将一个数组分割成多个
    array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
    array_count_values -- 统计数组中所有的值出现的次数
    array_diff_assoc -- 带索引检查计算数组的差集
    array_diff_uassoc -- Computes the difference of arrays with additional index check which is performed by a user supplied callback function.
    array_diff -- 计算数组的差集
    array_fill -- 用给定的值填充数组
    array_filter -- 用回调函数过滤数组中的单元
    array_flip -- 交换数组中的键和值
    array_intersect_assoc -- 带索引检查计算数组的交集
    array_intersect -- 计算数组的交集
    array_key_exists -- 检查给定的键名或索引是否存在于数组中
    array_keys -- 返回数组中所有的键名
    array_map -- 将回调函数作用到给定数组的单元上
    array_merge_recursive -- 递归地合并两个或多个数组
    array_merge -- 合并两个或多个数组
    array_multisort -- 对多个数组或多维数组进行排序
    array_pad -- 用值将数组填补到指定长度
    array_pop -- 将数组最后一个单元弹出(出栈)
    array_push -- 将一个或多个单元压入数组的末尾(入栈)
    array_rand -- 从数组中随机取出一个或多个单元
    array_reduce -- 用回调函数迭代地将数组简化为单一的值
    array_reverse -- 返回一个单元顺序相反的数组
    array_search -- 在数组中搜索给定的值,如果成功则返回相应的键名
    array_shift -- 将数组开头的单元移出数组
    array_slice -- 从数组中取出一段
    array_splice -- 把数组中的一部分去掉并用其它值取代
    array_sum -- 计算数组中所有值的和
    array_udiff_assoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function.
    array_udiff_uassoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function. The index check is done by a callback function also
    array_udiff -- Computes the difference of arrays by using a callback function for data comparison.
    array_unique -- 移除数组中重复的值
    array_unshift -- 在数组开头插入一个或多个单元
    array_values -- 返回数组中所有的值
    array_walk -- 对数组中的每个成员应用用户函数
    array -- 新建一个数组
    arsort -- 对数组进行逆向排序并保持索引关系
    asort -- 对数组进行排序并保持索引关系
    compact -- 建立一个数组,包括变量名和它们的值
    count -- 统计变量中的单元数目
    current -- 返回数组中的当前单元
    each -- 返回数组中当前的键/值对并将数组指针向前移动一步
    end -- 将数组的内部指针指向最后一个单元
    extract -- 从数组中将变量导入到当前的符号表
    in_array -- 检查数组中是否存在某个值
    key -- 从结合数组中取得键名
    krsort -- 对数组按照键名逆向排序
    ksort -- 对数组按照键名排序
    list -- 把数组中的值赋给一些变量
    natcasesort -- 用“自然排序”算法对数组进行不区分大小写字母的排序
    natsort -- 用“自然排序”算法对数组排序
    next -- 将数组中的内部指针向前移动一位
    pos -- 得到数组当前的单元
    prev -- 将数组的内部指针倒回一位
    range -- 建立一个包含指定范围单元的数组
    reset -- 将数组的内部指针指向第一个单元
    rsort -- 对数组逆向排序
    shuffle -- 将数组打乱
    sizeof -- count() 的别名
    sort -- 对数组排序
    uasort -- 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
    uksort -- 使用用户自定义的比较函数对数组中的键名进行排序
    usort -- 使用用户自定义的比较函数对数组中的值进行排序

    排序专题
     
    数值排序
    sort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
    asort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
    rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
    arsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
    usort($arr,"function");使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
    uasort($arr,"function");使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序
     
    键名排序
    ksort($arr);按照键名正序排序【标准排序】
    krsort($arr);按照键名逆序排序
    uksort($arr,"function");使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)
     
    自然排序法排序【自然排序是指按照数值大小,标准排序是指以单个字符串进行排序】
    natsort($arr);自然排序(忽略键名)
    natcasesort($arr);自然排序(忽略大小写,忽略键名)

  • 相关阅读:
    使用 gpg 加密文件
    CodeIgniter-Lottery
    使用phpize安装php扩展
    myWaterfall
    一台电脑上的git同时使用两个github账户
    移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)
    移动端禁止页面下滑
    移动端用js与jquery实时监听输入框值的改动
    不管人生怎么走,都需要实时回头看看
    Shader 入门笔记(二) CPU和GPU之间的通信,渲染流水线
  • 原文地址:https://www.cnblogs.com/sien6/p/13780750.html
Copyright © 2011-2022 走看看