zoukankan      html  css  js  c++  java
  • PHP数组函数总结与使用

    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)
    将数组打乱
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    [转载]IT名企的薪资情况
    [转载]基于Oracle的高性能动态SQL程序开发(一)
    [转载]基于Oracle的高性能动态SQL程序开发(二)
    [转载]从Google身上可以学到的14个东西
    两篇励志故事
    《RedHat9系统管理》读书笔记 下载
    Linux各种版本下载
    Hibernate介绍, 语法 和 Hibernate的基本元素
    android中系统日期时间的获取
    关于Struts框架简介
  • 原文地址:https://www.cnblogs.com/wyqn/p/10964155.html
Copyright © 2011-2022 走看看