当前位置: 首页 > Linux

PHP基础(一)数组处理函数

时间:2023-04-07 00:53:59 Linux

array_change_key_case(array$array[,int$case=CASE_LOWER]):array将array数组中的所有键名改为大写或小写,由$case参数控制。case参数的可用值有:CASE_LOWER(默认,小写),CASE_UPPER(大写),返回键名修改后的数组。array_column(array$input,mixed$column_key[,minxed$index_key=null]):数组返回输入数组中值为column_key的列。如果指定了$index_key参数,则返回数组中$index_key列的值为Thekey$a=array(array('name'=>'zhangsan','age'=>12),array('name'=>'lisi','age'=>13)作为$column_key的列值,array('name'=>'wangwu','age'=>14));$b=array_column($a,'name');print_r($b);//数组([0]=>zhangsan[1]=>lisi[2]=>wangwu)$c=array_column($a,'age','name');print_r($c);//Array([zhangsan]=>12[lisi]=>13[wangwu]=>14)array_combine(array$keys,array$values):array返回一个数组,以$key数组中的值作为键,以$values数组中的值作为对应的值。如果$keys和$values中的数组元素个数不一致,就会报错。$keys数组中的非法值会被转为字符串类型$keys=array("zhangsan","lisi","wangwu");$values=array(11,12,13)??;$c=array_combine($keys,$values);print_r($c);//Array([zhangsan]=>11[lisi]=>12[wangwu]=>13)array_count_values(array$array):数组统计所有的值出现的次数。返回一个关联数组,它的键是$array数组的值,它的值是它出现的次数。如果$array数组中有非字符串或整型元素,会报错。$a=['zhangsan',1,'lisi','lisi','a'];$b=array_count_values($a);print_r($b);//数组([zhangsan]=>1[1]=>1[lisi]=>2[a]=>1)array_diff(array$array1,array$array2[,array$array...]):array将$array1与一个或多个其他数组进行比较,返回$array1中但不在其他数组中的值。还有类似功能的函数:array_diff_assoc,array_diff_key,array_diff_uassoc,array_diff_ukeyarray_fill(int$start_index,int$num,mixed$value):array返回一个数组,数组的key从$start_index开始,填充$num次,然后填充值$value$a=array_fill(-1,5,'a');print_r($a);//数组([-1]=>a[0]=>a[1]=>a[2]=>a[3]=>a)array_filter(array$array[,callback$callback[,int$flag=0]]):array将$array函数中的每个元素传递给$callback函数,如果函数返回true,则$array数组保留这个值,否则丢弃它。数组的键名关系保持不变。$a=[1,2,3,4,10,11,23];$b=array_filter($a,function($val){return$val>5?true:false;});print_r($b);//Array([4]=>10[5]=>11[6]=>23)array_flip(array$array):数组函数返回键值交换后的数组,前提是原数组该值可以作为合法的键名(字符串或整数),否则会报错。如果一个值在原数组中出现多次,倒序数组只会保留最后一次出现的值。$a=array('zhangsan'=>'shanxi','lisi'=>'hubei','wangwu'=>'shanxi','zhaoliu'=>'shanghai');$b=array_flip($a);print_r($b);//Array([山西]=>王屋[湖北]=>李四[上海]=>赵六)array_intersect_assoc(array$array1,array$array2[,array$array...]):数组函数返回一个值数组(比较键),这些值出现在$array1中,也出现在其他数组中。$a=['姓名'=>'张三','年龄'=>12,'性别'=>'a','b'];$b=['姓名'=>'张三','age'=>11,'a','b'];$c=array_intersect_assoc($a,$b);print_r($c);//Array([name]=>张三)array_intersect(array$array1).,array$array2[,array$array3...]):array返回一个数组,其中包含出现在$array1中也出现在其他数组中的值。键值关系保持不变。$a=['姓名'=>'张三','年龄'=>12,'性别'=>'a','b'];$b=['姓名'=>'张三','age'=>11,'a','b'];$c=array_intersect($a,$b);printr_($c);//数组([姓名]=>张三[性别]=>a[0]=>b)类似功能的函数有:array_intersect_assoc,array_intersect_key,array_intersect_uassoc,array_intersect_ukeyarray_kye_exists(mixed$key,array$array):bool检查key$key是否存在于数组$array中,存在则返回true,如果不存在则返回true返回false。array_key_first(array$array):混合返回数组的第一个键名。(PHP>=7.3.0)$a=['name'=>'张三','age'=>12,'sex'=>'a','b'];print_r(array_key_first($a));//namearray_key_last(array$array):$mixed返回数组的最后一个键名。(PHP>=7.3.0)$a=['name'=>'张三','age'=>12,'sex'=>'a','b'];print_r(array_key_last($a));//0array_keys(array$array[,mixed$search_value=null[,bool$strict=false]]):数组函数返回$array数组中的所有键名。如果指定了参数$search_value,则只会返回这个值的键名。$strict参数决定搜索时是否使用严格比较$a=['name'=>'张三','age'=>12,'sex'=>'a','b'];$b=array_keys($a);$c=array_keys($a,12);print_r($b);//数组([0]=>姓名[1]=>年龄[2]=>性别[3]=>0)print_r($c);//数组([0]=>age)array_map(callback$callback,array$array):array函数在对$array函数中的每个元素应用$callback回调函数后返回一个数组。$a=[1,2,3,4,5];$b=array_map(function($val){return$val*$val;},$a);print_r($b);//数组([0]=>1[1]=>4[2]=>9[3]=>16[4]=>25)array_merge(array$array1,[,array$...]):数组函数转换a将一个或多个数组的值附加到前一个数组,返回结果数组。如果数组中有相同的字符串键,后面的会覆盖前面的;如果数组包含相同的数字键,后面的不会覆盖前面的。$a=['name'=>1,'age'=>2,3];$b=['age'=>4,2,'sex'=>1];$c=array_merge($a,$b);print_r($c);//Array([name]=>1[age]=>4[0]=>3[1]=>2[sex]=>1)当两个数组匹配时附加time:$array1+$array2,当下标相同时,只保留最先出现的下标的值。$a=['姓名'=>1,'年龄'=>2,3];$b=['年龄'=>4,2,'性别'=>1];$c=$a+$b;print_r($c);//Array([name]=>1[age]=>2[0]=>3[sex]=>1)array_pad(array$array,int$size,mixed$value):数组函数返回一个用$value到$size填充的数组。仅当数组本身的长度小于$size时才有效。$a=[1,2,3];$c=array_pad($a,5,99);print_r($c);//数组([0]=>1[1]=>2[2]=>3[3]=>99[4]=>99)$c=array_pad($a,2,88);打印_r($c);//Array([0]=>1[1]=>2[2]=>3)array_pop(array&$array):数组函数弹出并返回数组$array的最后一个元素,并减少长度数组的一个。$a=[1];$b=array_pop($a);print_r($a);//数组([0]=>1[1]=>2)print_r($b);//3$c=array_pop($a);print_r($a);//Array([0]=>1[1]=>2)print_r($b);//3array_product(array$array):number返回所有在arrayProductofvalues$a=[1,3,5,7,9];$b=array_product($a);打印_r($b);//945$c=[1,2,3,'a'];$b=array_product($a);print_r($b);//0array_push(array&$array,mixed$value1[,mixed$value...]):int函数将一个或多个值压入数组的末尾,返回运算后数组中元素的个数。$a=[1,2,3];$b=array_push($a,4,5);print_r($a);//数组([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5)print_r($b);//5array_reverse(array$array,[,bool$preverse_keys=FALSE]):数组函数返回一个数组。第二个参数控制是否保留原数组的键。默认不保留$a=[1,2,3,'a'=>4];$b=array_reverse($a);$c=array_reverse($a,true);print_r($b);//数组([a]=>4[0]=>3[1]=>2[2]=>1)print_r($c);//数组([a]=>4[2]=>3[1]=>2[0]=>1)array_search(mixed$needle,array$haystack,[bool$strict=false]):在数组$haystack$needle中混合搜索,如果成功,返回第一个对应的key姓名。$a=['a'=>1,'b'=>2,'c'=>1];$b=array_search(1,$a);print_r($b);//aarray_shift(数组$array):mixed删除数组的第一个元素并返回它。$a=[2,'a'=>1,3,4];$b=array_shift($a);print_r($a);//数组([a]=>1[0]=>3[1]=>4)print_r($b);//2array_sum(array$array):number将数组中的所有值相加并返回结果$a=[1,2,3,'a'];$b=array_sum($a);print_r($b);//6array_unique(array$array[,int$sort_flags=SORT_STRING]):数组函数返回一个没有重复值的新数组。array_unshift(array$array[,mixed$...]):int函数在数组开头插入传入单元,返回新的数组个数。$a=[1,2,3,4];$b=array_unshift($a,0,9,8);打印_r($a);//数组([0]=>0[1]=>9[2]=>8[3]=>1[4]=>2[5]=>3[6]=>4)print_r($b);//7array_values(array$array):array返回输入数组中的所有值,并用数字索引它们。array_walk(array&$array,callable$callback[,mixed$userdata=NULL]):bool使用回调函数$callback处理数组的每个元素。回调函数接受两个参数,第一个是值,第二个是键名。如果需要将回调函数的操作直接应用到数组的值上,需要设置回调函数的第一个参数作为引用。$a=['name'=>1,'age'=>2,'sex'=>3];$b=array_walk($a,function(&$val,$key){$val+=1;});print_r($a);//数组([姓名]=>2[年龄]=>3[性别]=>4)