PHP之数组函数归类
数组之所以强大,除了本身声明、存储方式灵活,它还有坚强后盾:一系列功能各异的数组处理函数。就像一只军队,除了领队将军本身能征善战,指挥英明之外,还有一群不怕死、忠实于他的士兵,这样才能显得整体的强大。
由于函数众多,易记混,况且还有手册在那儿,但是,最好还是每一个都鲁一遍,说不定要用到呢~
一、键/值处理
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之数组函数归类的更多相关文章
- 前端学PHP之数组函数
× 目录 [1]键值操作 [2]记数[3]回调函数[4]组合[5]栈和队列[6]顺序 前面的话 PHP中的数组功能非常强大,数组处理函数有着强大.灵活.高效的特点.PHP5提供了近100个操作数组的系 ...
- PHP数组函数: array_walk()与 array_map() 的区别
详细的介绍如下: PHP数组函数: array_walk() PHP数组函数: array_map() 实际应用中的一点区别与总结: array_walk() 主要用于对某个数组的迭代,相当于 for ...
- php常用数组函数回顾一
数组对于程序开发来说是一个必不可少的工具,我根据网上的常用数组函数,结合个人的使用情况,进行数组系列的总结复习.里面当然不只是数组的基本用法,还有相似函数的不同用法的简单实例,力求用最简单的实例,记住 ...
- javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数
javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数 1.常规函数 javascript常规函数包括以下9个 ...
- PHP 数组函数整理
如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作. 经常,开发人员发现在PHP中使用这种数据结构 ...
- PHP函数积累总结(Math函数、字符串函数、数组函数)
Math函数:10个较常用标红.abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切ata ...
- PHP常用数组函数
一.数组操作的基本函数 数组的键名和值 array_values($arr); 获得数组的值 array_keys($arr); 获得数组的键名 array_flip($arr); 数组中的 ...
- PHP学习之[第06讲]数组、多维数组和数组函数
一.数组 ①Array(“aa”,12,true,2.2,”test”,50); ②Array(“title”=>“aa”, ”age”=>20); 1.创建: $arr= array( ...
- [转] 有趣的JavaScript原生数组函数
在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...
随机推荐
- 利用python进行折线图,直方图和饼图的绘制
我用10个国家某年的GDP来绘图,数据如下: labels = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', ...
- Hdu 5289-Assignment 贪心,ST表
题目: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Assignment Time Limit: 4000/2000 MS (Java/Others) ...
- POJ3016-K-Monotonic(左偏树+DP)
我觉得我要改一下签名了……怎么会有窝这么啰嗦的人呢? 做这题需要先学习左偏树<左偏树的特点及其应用> 然后做一下POJ3666,这题的简单版. 思路: 考虑一下维护中位数的过程原数组为A, ...
- Hadoop MapReduce概念学习系列之JobTracker、ResourceManager、Task Tracker、NodeManager(二十一)
Tracker是跟踪者,跟踪器.JobTracker是项目经理.在hadoop2*的0.23版本之后,改叫RM了.ResourceManager.TaskTracker是小组长.它手下,还有具体搬砖的 ...
- 多进程解决datasnap支持的tcp长连接数量少的问题
对于实时采集数据的项目,应用场景比如是这样的:5000客户端,每个客户端每隔500MS要给服务器上传一次数据. 大家知道,像INDY这种阻塞型的通信控件,所能支持的TCP长连接的一般地不能超过1000 ...
- activemq重启
172.16.10.72 activemq /home/local/apache-activemq-5.10.0/bin/activemq-admin stop /home/local/apache- ...
- 射频识别技术漫谈(5)——防冲突【worldsing 笔记】
正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作.但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突. 防冲突机制是非接触式智能 ...
- DOS/Windows下黑客攻防(一)——神秘黑客大曝光
一.认识神秘的黑客 谈到网络安全,人们不自觉间就会联想到黑客,人们往往会将他们同破坏网络安全.盗取用户账号.偷窃个人私密信息联系起来.其实黑客也有好坏之分,他们并不全是网络上的捣乱分子,其中也有一部分 ...
- C#学习笔记——面向对象、面向组件以及类型基础
C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...
- MinGW安装和使用总结
0.前言 最近对开源编译平台和编译器产生了兴趣,借博客平台总结一些东西(包括minGW,eclipse,sourcery和GDB调试等内容).总感觉时间一长某些东西自己都会忘记,过段时间回头看看自己的 ...