数组之所以强大,除了本身声明、存储方式灵活,它还有坚强后盾:一系列功能各异的数组处理函数。就像一只军队,除了领队将军本身能征善战,指挥英明之外,还有一群不怕死、忠实于他的士兵,这样才能显得整体的强大。

由于函数众多,易记混,况且还有手册在那儿,但是,最好还是每一个都鲁一遍,说不定要用到呢~

一、键/值处理

array_values()   返回数组中的值

array_keys   返回数组中的键名

array_change_key_case   返回全为大写会小写的数组的键名

array_column   返回指定键名的列,版本须>=5.5

in_array/array_search   判断值是否在数组中,注意默认为不严格的比较,不对型和值同时作检查,只要能转为相同的值就可以

array_key_exists   判断键是否在数组中

array_flip   将键与值反转,对调位置,键变为值,值变为键。对于相同的值,变换为键后,后面的键将把前面的键覆盖

array_reverse   倒置数组,与原顺序相反

二、全值统计

array_sum   求数组中的所有值的和

array_product   求数组中所有值得积

count/sizeof    返回数组中元素个数

array_count_values   返回每个值出现的次数,键名为该值

三、切删处理

array_chunk   将数组分块,比如将一维数组切分成更小size的数组,最后各个数组整合在一起形成二维数组返回

array_slice   从数组中切一段返回,注意传入偏移、长度参数的正负,偏移为正则从数组左边开始,为负则从末端倒数这么多个开始。长度为正则切出这么多个,为负则切到末端倒数到这个长度值为止

array_splice   从数组中切出一段,要么删除,要么用其他值代替删除的一部分,注意传入偏移和长度参数的正负

array_unique   将重复值归并为一个,非严格判断

四、填充处理

array_pad   用指定值将数组填充到指定长度,指定长度小于本身长度时不作处理

array_fill   指定偏移、长度、填充值,返回填充后的数组

array_fill_keys(array $keys, mixed $value)    以一个作为键的数组和指定值来生成一个数组

五、集合运算

array_diff    差集,仅比较值

array_diff_key   差集,仅比较键

array_diff_assoc    差集,比较键和值,即当键与值均相同时才被认为是同样的元素。判断同与不同均执行严格的全等于检查

array_diff_ukeys    使用用户自定义函数,通过键名比较,带u的表示user,即用户自定义的比较形式

array_diff_uassoc    自定义函数,键和值比较差值运算

array_intersect    交集运算,类上

array_intersect_key

array_intersect_assoc

array_intersect_ukey

array_intersect_uassoc

array_merge   并集,注意当为字符串索引且相同时后一个值会覆盖前一个值,当为整数索引时只会将后一个值附加上来

array_merge_recursive   递归合并,即当数组中元素仍为数组时,继续执行并操作,注意此时相同的字符串键名的元素会合并到同一个数组中去,整数索引的元素仍为附加

对于差集和交集,还有用回调函数处理值的(array_udiff),或同时使用两个回调函数来处理键和值(array_udiff_uassoc、array_uintersect_uassoc)等等。

六、类数据结构处理

array_push   从数组末尾添加元素,可一次添加多个

array_pop   从末端弹出一个元素

array_shift  从头部弹出一个元素

array_unshift   从头部添加一个元素

以上函数就可以模拟栈、队列等结构

七、使用回调函数

array_reduce   使用自定义函数将数组中的值转化为一个值,比如相乘、相加等

array_walk   对数组中每个元素使用回调函数遍历一遍

array_walk_recursive   上面的递归版本,子元素为数组时,将子元素中的每一个元素再使用回调函数处理一遍

array_filter   使用回调函数设定条件,对数组元素过滤,比如取奇数

array_map  可以传递多个数组,回调函数的参数个数需与数组参数个数保持一致,遍历处理时参数与数组参数顺序一一对应,返回回调处理后的一维数组。如果数组元素不够将以空代替

八、排序函数

sort    升序排列,可以更改各种排序模式

rsort   降序排列(r:reverse,颠倒,倒置,即反向的意思)

usort   使用用户自定义函数排序

asort   升序排列,保持原索引不变

arsort   类上的降序排列

uasort   用户自定义函数升序排列,保持原键名

ksort   按照键名,升序排列

uksort   使用用户自定义函数,按照键名升序排列

krsort   按照键名,降序排列

natsort   使用自然排序法进行升序排列

natcasesort   natsort不区分大小写的版本

array_multisort   对多个或多维数组排序,实现多个或多维数组联动排序,可达到SQL语句的order by多个字段的效果

九、其他函数

range   生成指定范围的索引数组

array_rand    随机返回数组中的若干个键名,默认返回一个

shuffle   将数组内元素打乱

array_combine   以一个数组值作为键,另一个数组值作为值,联接生成一个数组

implode   将数组连接为一个字符串

explode   将字符串劈分成一个数组

PHP之数组函数归类的更多相关文章

  1. 前端学PHP之数组函数

    × 目录 [1]键值操作 [2]记数[3]回调函数[4]组合[5]栈和队列[6]顺序 前面的话 PHP中的数组功能非常强大,数组处理函数有着强大.灵活.高效的特点.PHP5提供了近100个操作数组的系 ...

  2. PHP数组函数: array_walk()与 array_map() 的区别

    详细的介绍如下: PHP数组函数: array_walk() PHP数组函数: array_map() 实际应用中的一点区别与总结: array_walk() 主要用于对某个数组的迭代,相当于 for ...

  3. php常用数组函数回顾一

    数组对于程序开发来说是一个必不可少的工具,我根据网上的常用数组函数,结合个人的使用情况,进行数组系列的总结复习.里面当然不只是数组的基本用法,还有相似函数的不同用法的简单实例,力求用最简单的实例,记住 ...

  4. javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数

    javascript函数一共可分为五类:    ·常规函数    ·数组函数    ·日期函数    ·数学函数    ·字符串函数    1.常规函数    javascript常规函数包括以下9个 ...

  5. PHP 数组函数整理

    如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作. 经常,开发人员发现在PHP中使用这种数据结构 ...

  6. PHP函数积累总结(Math函数、字符串函数、数组函数)

    Math函数:10个较常用标红.abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切ata ...

  7. PHP常用数组函数

      一.数组操作的基本函数 数组的键名和值 array_values($arr);  获得数组的值 array_keys($arr);  获得数组的键名 array_flip($arr);  数组中的 ...

  8. PHP学习之[第06讲]数组、多维数组和数组函数

    一.数组 ①Array(“aa”,12,true,2.2,”test”,50); ②Array(“title”=>“aa”,  ”age”=>20); 1.创建: $arr= array( ...

  9. [转] 有趣的JavaScript原生数组函数

    在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...

随机推荐

  1. Cppcheck代码分析(2)

    功能 解析函数中的可能的代码执行流 函数实际执行中只会执行代码流中的一条流 分析: 分支语句 if-else ,switch-case 循环语句 while, do-while ,for 代码流举例 ...

  2. HDU5791--Two (DP)

    题意:两个数列a,b,求相同的子序列有多少对,内容相同位置不同也算不同. 题解:dp[i][j]表示a数列前i个数个 b数列前j个数 有多少对 递推方程: dp[i][j] = dp[i-1][j-1 ...

  3. 关于CSS样式优先级

    一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用!important可 ...

  4. hdoj 1162 Eddy's picture

    并查集+最小生成树 Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  5. iOS开发核心语言Objective C —— 所有知识点总结

    C和OC对比 OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头 OC中新增 ...

  6. ZOJ1111:Poker Hands(模拟题)

    A poker deck contains 52 cards - each card has a suit which is one of clubs, diamonds, hearts, or sp ...

  7. 《MEF程序设计指南》博文汇总

    <MEF程序设计指南>博文汇总 在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等.在 Microsoft 的平台上,.NET Fr ...

  8. PowerDesigner 企业架构模型 ( EAM )

    PowerDesigner 企业架构模型 ( EAM ) 说明 file工作数据库框架application网络   目录(?)[+]   一. 企业架构模型 说明 EnterpriseArchite ...

  9. 使用jdbc连接上oracle的两种方法

    1. 使用thin连接 优点:thin驱动都是纯Java代码,并且使用TCP/IP技术通过java的Socket连接上Oracle数据库,所以thin驱动是与平台无关的,无需安装Oracle客户端,只 ...

  10. Spring集成Quartz定时任务框架介绍和Cron表达式详解

    原文地址:http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html 在JavaEE系统 ...