array_change_key_case(数组,CASE_LOWER/CASE_UPPER)
数组键值转化为小写CASE_LOWER/大写CASE_UPPER
 
array_chunk(数组,分割后每个子数组里元素个数,true/false)
分割数组,第三个参数为true-保留原始数组中的键名 false-默认 从0开始的新数组索引
 
array_column(二维数组,key,other_key可选参数)
返回二维数组中的某一列,key和other_key对应的值,组成新的other_balue=>value数组
 
array_combine(键名数组,键值数组)
通过合并两个数组来创建一个新的数组,数组不可以为空,数组长度不可不同,否则返回false
这个数组函数在以小时为单位,统计访问量的时候用过
 
array_count_values(一维数组)
返回以每个元素的值为key,元素个数为value的新的数组.
 
array_diff(数组1,数组2,数组3.....)
返回在数组1中有,但是在数组2数组3...中没有的,数组的值构成的数组
 
array_diff_assoc(数组1,数组2,数组3.....)
和array_diff相比,除了比较数组的值还比较数组的键,返回差集
 
array_diff_key(数组1,数组2,数组3...)
比较数组的键,返回差集
 
array_intersect(arr1,arr2,arr3.......)
比较数组的键值并返回交集.需要注意的是这里交集指的意思是,同时存在于数组1,2,3中的值,返回新的数组,键名以数组1的为准
 
array_intersect_assoc(arr1,arr2,arr3.......)
比较数组的键名和键值并返回交集
 
array_intersect_key(arr1,arr2,arr3.......)
比较数组的键名,并返回交集
以上三种比较最终返回的都是数组1中的键值对,只不过比较的类型不同
 
数组比较函数,返回的都是在数组1中存在的键值对,但是比较类型有所不同
(1)比较数组的值
(2)比较数组的键
(3)比较数组的键和值
 
array_fill(index1,number填充个数,填充的元素)
定义数组.用给定的值填充数组,填充个数number
 
array_combine和array_combine配合使用过滤敏感词汇
(1)敏感词汇组成的数组
$badword = array('张三','张三丰','张三丰田');
 
(2)敏感词汇转换成键,替代敏感词汇的*为值
$badword1 = array_combine($badword,array_fill(0,count($badword),'*'));
//Array ( [张三] => * [张三丰] => * [张三丰田] => * )
 
(3)通过strtr函数将敏感词汇替换
$bb = '我今天开着张三丰田上班';
$str = strtr($bb, $badword1);
echo $str;//我今天开着*上班
 
strtr字符串替换函数的两种用法
(1)strtr(string,from,to)
把string字符串里的from替换成to,需要注意的是from=>to f都替换成t,r都替换成0,om没有可替换的,不变,因为to就两个长度
(2)strtr(string,array)
将array中的键名出现在string中的,统一替换成键名对应的键值
 
如果只是简单地替换某一个敏感词汇,一个strtr函数就够了,如果是替换很多敏感词汇,除了用第二种方式外,有时候还需要配合数组函数,因为用于替换的可能不止是*
 
判断一个string中是否有某一些词汇
(1)将需要检索的词汇拼接成字符串
$hei=array('中国','日本');
$blacklist="/".implode("|",$hei)."/i";
 
(2)匹配string中是否出现这些词汇
$str="中国一是一个很好的国家";
if(preg_match($blacklist, $str, $matches)){
print "found:". $matches[0];
} else {
print "not found.";
}
 
array_fill_keys(array作为键名的数组,value要填充的值)
键名数组的键值将作为新数组的键名
所以过滤敏感词汇的第二步就可以:
由$badword1 = array_combine($badword,array_fill(0,count($badword),'*'));
改为$badword1 = array_fill_keys($badword,'*')
 
一千个人中随机选出1,2,3等奖,可以理解为在1000-n个空数组中随机插入n个获奖人员
(1)制造出包含30个元素的数组,包含未中奖和中奖人员
一等奖1个 = array_fill(0,1,1)
二等奖2个 = array_fill(0,2,2)
三等奖3个 = array_fill(0,3,3)
不中奖24个 = array_fill(0,24,0) 共计30人,有6人可中奖
$arr = array_merge(一等奖,二等奖,三等奖,不中奖)
(2)数组合并以后,需要把顺序打乱
shuffle($arr)
最终随机选出1等奖2等奖3等奖.shuffle(英文意思洗牌/调动/换位置)
 
array_filter(数组,回调函数)
回调函数过滤掉数组中的元素(也可以理解为过滤出数组中的元素)
回到上一个抽奖的问题中,如何把1,2,3等奖过滤出来,拿出他们的编号呢?
function getWinning($a){
if($a == 1 || $a == 2 || $a == 3){
return 1;
}else{
return 0;
}
}
$win = array_filter($arr, 'getWinning')
最终通过自定义函数将中奖的过滤出来
Array ( [3] => 3 [8] => 3 [11] => 3 [12] => 2 [17] => 2 [18] => 1 )
 
array_flip(array)
反转数组,将数组的键和值互换.需要注意的是,如果一个值存在多个,那么最后一个键名将作为反转后的值.
 
array_key_exists(key,array)
判断key是否存在数组中
需要注意的是:根据microtime(true)计算出来的时间,在执行效率方面
isset > array_key_exists > in_array
备注:在数据量小的时候,isset和array_key_exists效率差别不大
 
array_keys(arr,指定的值可选参数,true/false)
返回包含数组中所有键名的新数组(索引数组)
第二个参数是只返回指定值的键名
第三个参数是基于第二个参数的,如果是true,键值将以===对比,反之则为==对比
 
array_map(function,array1,array2....)
函数作用于数组中的值,返回新的值组成的数组
 
array_merge(arr1,arr2,arr3)
将多个数组合并成一个数组.
(1)当数组中的键名一样的时候,最后的键值以arr3(后面的数组)的为准
(2)当只有一个数组的时候,而且数组的键名是数字,将返回index从0开始的数组
在合并的这些数组中所有没有键名的值,将从0开始作为key依次递增
 
array_merge_recursive(arr1,arr2,arr3....)
当键名一样的时候,将键名相同的值重新组成一个索引数组
Array ( [a] => red [b] => Array ( [0] => green [1] => yellow ) [c] => blue )
 
array_pad(arr,size,value)
将指定数值插入数组中,并返回长度为size的新数组,原数组键值不变
size的绝对值如果小于arr的长度,则直接返回arr,不会插入value
如果size的值为负数,则会在arr的头部插入指定值
 
array_pop(arr)
删除数组中的最后一个元素,返回删除的元素
如果是空数组直接返回null
 
array_shift(arr)
删除数组中的第一个元素,返回删除的元素
如果数组是空直接返回null
 
array_push(arr, value1, value2...)
在数组的尾部插入值
 
array_unshift(arr, value1, value2...)
在数组的头部插入值
 
array_product(arr)
返回数组中所有元素的乘积,字符串将被视为0
 
array_sum(arr)
返回数组中所有值的和
 
array_rand(arr, number)
从数组中随机返回一个或多个元素.
number>0的时候返回的是有多个随机值组成的数组
 
array_reduce(arr, function, 发送到函数的初始值可选)
向用户自定义函数发送数组中的值,并返回一个字符串
类似implode,但是可选择性更多
 
array_replace(arr1,arr2,arr3....)
后面数组取代(键名相同的)前面数组的值
如果一个键存在于第二个数组 array2,但是不存在于第一个数组 array1,则会在第一个数组 array1 中创建这个元素
 
array_replace_recursive(arr1, arr2, arr3...)
递归地使用后面数组的值取代前面数组的值
 
sort根据数组的值进行升序排序,生成的新数组会赋予从0开始的索引
rsort根据数组的值进行降序排序,生成新数组会赋予从0开始的索引
asort/arsort用法和sort/rsort类似,只是asort/arsort会保留原有索引关系
ksort根据数组的键名进行升序排序,生成的新数组沿用之前的键名不变
krsort根据数组的键名进行降序排序,生成的新数组沿用之前的键名不变
 
array_multisort(arr1,升序/降序,排序类型,数组2,升序/降序,数组2的排序类型....)
对多个数组进行排序
排列顺序:SORT_ASC升序 SORT_DESC降序 默认为升序
排序类型:默认SORT_REGULAR 把每一项按常规顺序排列(Standard ASCII)
 
$a=array(100,2, 4, 7, 7);
$b=array(ab, ac,ad,ag,ap);
array_multisort($a,SORT_NUMERIC,SORT_DESC,$b,SORT_STRING,SORT_ASC);
print_r($a);//Array ( [0] => 100 [1] => 7 [2] => 7 [3] => 4 [4] => 2 )
print_r($b);//Array ( [0] => ab [1] => ag [2] => ap [3] => ad [4] => ac )
多数租排序数组的长度还必须一样,否则会报错
数组2会按照数组1的索引顺序,排列自己的元素
 
array_reverse(arr, true/false)
反转数组,如果第二个参数为true,则保留原有键名,否则索引从0重新排序
 
array_search(value, arr, true/false可选)
在数组中搜索某个键值,并返回键名.需要注意的是,当value存在多个时,返回第一次检索到的键名,当第三个可选参数为true时,value的匹配为===(全等)
array_search()和in_array()用法类似,如果未查询到,将会返回false
 
array_slice(arr,index,length可选,true/false可选)
从数组中取出一段值.第四个参数为true则保留键名,第二个参数如果为负数,则从倒数第index个开始取值.
 
array_splice(arr1, start, length可选, arr2可选)
移除并替换arr1中的元素,返回被删除元素的数组 如果length为0,则将从start处,插入arr1中的元素,start表示数组索引index
 
array_nuique(arr, sortingtype可选)
一般用于一维数组去重,第二个参数为可选
如果是二维数组去重,第二个参数为SORT_REGULAR,键名键值完全相同的子数组元素才会被去重,如果想去重的二维数组只是去掉重复的值不包含键名,那么一般需要将二维数组降维,然后再去重
 
array_values(arr)
返回数组中的值,索引将从0开始递增.备注:也适用于二维数组
 
array_walk(arr, function, 自定义function的参数/可选)
对数组中的每个元素应用回调函数.如果成功返回true,否则返回false
 
$var1 = 12
$var2 = 13
compact(var1, var2...)
创建一个以变量名为键名,变量值为键值的关联数组.如果参数为数组,那么数组中的值将作为变量名,来获取值. 允许var变量不存在
 
current(arr)
返回数组内部指针指向的元素,初始指向插入到数组中的第一个元素
 
shuffle(arr)
将数组打乱
 
 
 
 
 
 
 
 
 
 
 
 

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 ...

  10. PHP 中数组函数 isset 效率比 array_key_exists 更高

    PHP 中数组函数 isset 效率比 array_key_exists 更高 PHP 浏览:4194 2014年04月05日 isset 和 array_key_exists 函数都可以用来测试数组 ...

随机推荐

  1. [hdu6391]Lord Li's problem

    首先发现结果与需要改变的具体位置无关,只和需要改变的位置的个数有关,因此设f[i][j]表示选取了i个数字异或结果有j个1,只要分析接下来选择的数和这j个1有几个重合即可: 1. 三个数字全部重合,即 ...

  2. [luogu4259]寻找车位

    考虑一个分治的做法:按行分治,将所有区间分为两类--经过分割线的.在左/右区间内部,后者显然可以递归下取,考虑前者 先求出出该行上每一列向上和向下的最大长度,记作$up_{i}$和$down_{i}$ ...

  3. [bzoj1052]覆盖问题

    先二分答案,容易发现一定有一个正方形覆盖在角上(即有两条边在最X的地方),否则4个最X的点一定无法覆盖,然后暴力确定即可 1 #include<bits/stdc++.h> 2 using ...

  4. lilypond进阶——用scheme修改乐谱细节

    lilypond对乐谱内容的修改非常自由,用户可以自由根据需要做调整 调整一般都是用\override的命令,但是会比较冗长,码代码的时候比较麻烦 重新设置一个函数来概括命令,调用的时候使用的代码更短 ...

  5. Java设计模式之(九)——门面模式

    1.什么是门面模式? Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher ...

  6. appScan安全软件的使用

    1.点击文件,新建 2.常规扫描 3.点击下一步 4.输入需要扫描的网站 5.下一步,如果有账号 密码可以使用记录. 6.选择缺省值,下一步 7.启动全面扫描.

  7. ant的xml解释

    ant必须以<project>开始和</project>结束 --project(父节点) --target(子节点) ---javac(孙节点) ---echo(孙节点)

  8. “微信小程序从分享卡片进入,第一次获取不到用户uid、第二次能获取到用户uid”解决方法

    用uniapp开发微信小程序时,有一个需求是分享罐表详情页面给其它用户,其它用户(在已经登录的状态下)点击分享卡片可以直接跳转到该罐表详情页,且能显示自己是否已经收藏该罐表(收藏状态由用户uid和罐表 ...

  9. springboot与数据访问之jdbc

    官网的starthttps://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter 添加依 ...

  10. 55. Binary Tree Preorder Traversal

    Binary Tree Preorder Traversal My Submissions QuestionEditorial Solution Total Accepted: 119655 Tota ...