PHP array functions summary

array_change_key_case(数组,CASE_LOWER/CASE_UPPER)
An array of key-value converted to lowercase CASE_LOWER / uppercase CASE_UPPER
 
array_chunk (array, after dividing the number of elements in each sub-array, true / false)
Striped array, the third parameter is true- reserved keys false- array of new original default array index start from 0
 
array_column (two-dimensional array, key, other_key optional parameters)
Returns a column two-dimensional array, key, and a value corresponding other_key form a new other_balue => value array
 
array_combine (an array of keys, key array)
Created by merging two arrays a new array, the array is not empty, the array length can not be different, false otherwise
The array functions used at the time in hours, the number of visits of
 
array_count_values ​​(one-dimensional array)
Returns the value of each element key, a new value for the number of elements in the array.
 
array_diff (arrays 1, 2 array, the array 3 .....)
In return an array of 1, but not in the array 2 ... 3 array, which is composed of an array of values
 
of array_diff_assoc (arrays 1, 2 array, the array 3 .....)
Array_diff and compared, in addition to comparing the key value of the array is still relatively array and returns difference set
 
array_diff_key (arrays 1, 2 array, the array 3 ...)
Comparing the key array returned difference set
 
array_intersect(arr1,arr2,arr3.......)
Comparison of key array and returns the intersection. Note that this refers to the intersection of mean, while there is value in an array of 1, 2, and returns the new array, an array of keys to prevail 1
 
array_intersect_assoc(arr1,arr2,arr3.......)
Key names and values ​​compare an array and returns the intersection
 
array_intersect_key(arr1,arr2,arr3.......)
Compare array keys, and returns the intersection
These three are relatively eventually return an array of key-value pairs 1, but the comparison of different types
 
数组比较函数,返回的都是在数组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)
将数组打乱
 
 
 
 
 
 
 
 
 
 
 
 

Guess you like

Origin www.cnblogs.com/wyqn/p/10964155.html
Recommended