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]键值操作 [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 ...
- PHP 中数组函数 isset 效率比 array_key_exists 更高
PHP 中数组函数 isset 效率比 array_key_exists 更高 PHP 浏览:4194 2014年04月05日 isset 和 array_key_exists 函数都可以用来测试数组 ...
随机推荐
- 生产者消费者模型及Golang简单实现
简介:介绍生产者消费者模型,及go简单实现的demo. 一.生产者消费者模型 生产者消费者模型:某个模块(函数等〉负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.协程 ...
- 使用apt安装docker
使用apt安装docker # 更新数据源 apt-get update # 安装所需依赖 apt-get -y install apt-transport-https ca-certificates ...
- 从一个小Bug,到Azure DevOps
1. 一个小Bug 最近和同事提起一个几年前的 Bug,那是一个很小很小的 Bug,没什么技术含量.那时候我刚入职,正好公司卖了一款仪器到某个国家,但是那边说配套的软件运行不起来,一打开就报错.经过排 ...
- 【2020五校联考NOIP #7】伟大的卫国战争
题面传送门 题意: 数轴上有 \(n\) 个点,现在要在它们之间连 \(m\) 条边,第 \(i\) 条边连接 \(a_i,b_i\) 两个点. 现在你要钦定每条边连在数轴的上方还是下方,使得任意两条 ...
- [USACO17FEB]Why Did the Cow Cross the Road III P
[USACO17FEB]Why Did the Cow Cross the Road III P 考虑我们对每种颜色记录这样一个信息 \((x,y,z)\),即左边出现的位置,右边出现的位置,该颜色. ...
- Codeforces 671C - Ultimate Weirdness of an Array(线段树维护+找性质)
Codeforces 题目传送门 & 洛谷题目传送门 *2800 的 DS,不过还是被我自己想出来了 u1s1 这个 D1C 比某些 D1D 不知道难到什么地方去了 首先碰到这类问题我们肯定考 ...
- Topcoder 10748 - StringDecryption(dp)
题面传送门 神仙题. 首先这个两次加密略微有点棘手,咱们不妨先从一次加密的情况入手考虑这个问题.显然,一次加密等价于将加密过的序列划分成若干段,每一段都是 \(xd\) 的形式表示这一段中有 \(x\ ...
- pycurl报错: ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend
报错: ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl ...
- .NET6控制台程序使用quartz.net
1.新建一个名为"ConsoleQuartz"的.NET6控制台程序. 2.nuget中安装Quartz和Quartz.Plugins,这2个DLL. 3.新建一个HelloQua ...
- Java8 Lambda表达式、函数式接口和方法引用
目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...