PHP常用数组函数总结
2018-02-11 15:47
691 查看
<?php /** * 数组函数. * User: zheng * * */ function showData($data){ if(is_array($data)){ var_dump($data); }else{ echo $data; } exit(); } $testArr = [ 'a'=>'1', 'b'=>'2', 'c'=>['e1'=>'1','e2'=>'2'], 'd'=>5 ]; $testArr2 = ['test1.jpg',5,'name'=>'shop01','diffItem']; $keyArr = [ ['id'=>1,'name'=>'shop01','img'=>'test1.jpg','price'=>5.0], ['id'=>2,'name'=>'shop01','img'=>'test2.jpg','price'=>5.0], ['id'=>3,'name'=>'shop01','img'=>'test3.jpg','price'=>5.2] ]; //转换数组索引大小写 $toUpperKeyArr = array_change_key_case($testArr,CASE_UPPER); //var_dump($toUpperKeyArr); //将一个数组分割成多个 $chuckArr = array_chunk($testArr,2,true); //showData($chuckArr); //取出多维数组某一列的值(可以指定返回列数组的索引) $getArrColumn = array_column($keyArr,'img','id'); //showData($getArrColumn); //创建一个数组,以第一个数组的值为其键,第二个数组的值为其值 $bulidArr = array_combine(array_column($keyArr,'id'),$keyArr); //showData($bulidArr); //统计数组中所有的值出现的次数 $countArrItem = array_count_values($testArr2); //showData($countArrItem); //返回第一个数组和第二个数组的差集(键名和值都要比较) $diffKeyMapArr = array_diff_assoc($testArr2,$keyArr[0]); //showData($diffKeyMapArr); //返回第一个数组和第二个数组的差集(按值比较) $diffArr = array_diff($testArr2,$keyArr[0]); //showData($diffArr); //返回第一个数组和第二个数组的差集(按键名比较) $diffArrByKey = array_diff_key($testArr2,$keyArr[0]); //showData($diffArrByKey); //使用指定的键和值填充数组 $fillArrByKey = array_fill_keys(['0','1'],[2,'Tom','testItme']); //showData($fillArrByKey); //用给定的值填充数组 $fillArrByValue = array_fill(0,5,'zyytest'); //showData($fillArrByValue); //用回调函数过滤数组中的单元 //示例1:去除值为数组的单元 $filterArr = array_filter($testArr,'remove'); function remove($item) { if(!is_array($item)){ return true; } return false; } //showData($filterArr); //示例2 :如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目,最常见的就是去空值 $testArr3 = ['','1'=>'2','2'=>'3','3'=>'4']; $filterArr2 = array_filter($testArr3); //showData($filterArr2); //示例3:回调函数传参(使用闭包) $num=1; $num2=2; $filterArr3 = array_filter($testArr3,function ($item)use($num,$num2){ return $item>$num+$num2; }); //showData($filterArr3); //交换数组中的键和值 //如果同一个值出现多次,则最后一个键名将作为它的值,其它键会被丢弃,成功返回交换后的数组,失败返回 NULL $flipArr = array_flip($testArr2); //showData($flipArr); $testArr4 = [0,1,2,3,'a'=>4]; $testArr5 = [0,1,2,'a'=>3]; //按值计算数组的交集 (保留第一个数组参数的索引) $intersectArr = array_intersect($testArr4,$testArr5); //showData($intersectArr); //按键名比较计算数组的交集 $intersectArrByKey = array_intersect_key($testArr4,$testArr5); //showData($intersectArrByKey); //按键名和值计算数组的交集 $intersectArrAssoc = array_intersect_assoc($testArr4,$testArr5); //showData($intersectArrAssoc); //检查数组里是否有指定的键名或索引 //isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会 $bool = array_key_exists('a',$testArr); //返回数组中部分的或所有的键名 $arrKeys = array_keys($testArr); //showData($arrKeys); //示例2:返回值为2,且全等比较的键 $arrKeys2 = array_keys($testArr,2,true); //为数组的每个元素应用回调函数 $mapArr = array_map(function ($item){return $item+2;},$testArr4); //showData($mapArr); //递归的合并数组 /** * 如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去, * 因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。 * 然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。 */ $mergeA = ['a'=>1,'b'=>['1','2'],'c'=>3]; $mergeB = ['a'=>2,'b'=>3,'c'=>4]; $merge_recursive = array_merge_recursive($mergeA,$mergeB); //showData($merge_recursive); //合并一个或多个数组 /** * 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。 * 然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 * 如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符 */ $mergeArr = array_merge($mergeA,$mergeB); $mergeArr2 = $mergeA+$mergeB; //showData($mergeArr); //showData($mergeArr2); //一次对多个数组进行排序 //根据某一维或多维对多维数组进行排序。 $sortArray = [ ['id'=>5,'name'=>'song'], ['id'=>2,'name'=>'songsong'], ['id'=>9,'name'=>'a'], ['id'=>9,'name'=>'zyy'] ]; /*示例1,一次对多个数组排序 (sort的升级版,用于一维数组)*/ $sort1 = [8,2,9]; $sort2 = [6,2,8]; array_multisort($sort1,$sort2,SORT_ASC); //showData($sort1); //showData($sort2); /*示例2,根据数组的某一维排序 (用于二维数组) 例如以下示例将数组 $sortArray 按id列的正序排列为第一排序,按name列的倒序排列为第二排序 */ array_multisort(array_column($sortArray,'id'), SORT_ASC,array_column($sortArray,'name'), SORT_DESC); // showData($sortArray); //以指定长度将一个值填充进数组 $padArr = array_pad($sort1,-5,0); //showData($padArr); /** * 与array_fill 比较 array_pad 是 填充到 指定的长度,比如上例是填充到5,负数表示是从左边开始填充 * 而array_file 是指 填充 多少个 */ //弹出数组最后一个单元 $pop = array_pop($sort1); //showData($sort1); //将一个单元和多个单元压入数组的尾部 array_push($sort1,10); //showData($sort1); //从数组中随机取出一个或多个单元 $randKey = array_rand($sort1,2); //showData($randKey); //用回调函数迭代地将数组简化为单一的值 $testArr6 = ['2','3','4']; $reduceArr = array_reduce($testArr6,function($item,$param){ return $item*$param; },2); //showData($reduceArr); $oldArr = ['key1'=>['a','b','c'],'key2'=>'d','key3'=>['e']]; $replaceArr = ['key1'=>['f'],'key2'=>'g']; //使用传递的数组替换第一个数组的元素 $replaceResult = array_replace($oldArr,$replaceArr); //showData($replaceResult); //使用传递的数组递归地替换第一个数组的元素 $recursiveReplaceResult = array_replace_recursive($oldArr,$replaceArr); //showData($recursiveReplaceResult); $reverseArr =['a'=>2,'b'=>3,'c'=>4]; //返回单元顺序相反的数组 $reverse = array_reverse($reverseArr,true); //showData($reverse); //在数组中搜索给定的值,如果成功则返回首个相应的键名 $searchArr = array_search('3',$reverseArr); //showData($searchArr); //将数组开头单元移出数组 $removeValue = array_shift($reverseArr); //showData($removeValue); //在数组开头插入一个或多个单元 $arrayLength = array_unshift($reverseArr,6,7); //showData($arrayLength); $uniqueArr = [1,1,2,3,4,2]; //移除数组中重复的值 $unique = array_unique($uniqueArr); //showData($unique); //返回数组的所有值并给其建立数字索引 $arrayValue = array_values($reverseArr); //showData($arrayValue); //对数组逆向排序并保持索引 arsort($reverseArr,SORT_STRING); // showData($reverseArr); $sort3 = ['a'=>5,'b'=>2,'c'=>9]; //对数组排序并保持索引 asort($sort3,SORT_NUMERIC ); //showData($sort3); //建立一个数组,包括变量名和它们的值 $a=2; $b=3; $c=4; $compact =compact('a','b','c'); //showData($compact); // 从数组中将变量导入到当前的符号表 extract(['my_var'=>2]); //show($my_var); //检查数组中是否存在某个值 $bool = in_array('2',$compact); //showData($bool); //打乱数组 shuffle($sort3); //showData($sort3); //对数组排序 sort($sort3); //showData($sort3);
相关文章推荐
- PHP基础知识总结02(常用的数组函数)
- PHP常用数组函数总结(转载)
- php常用函数总结-----数组
- php 常用函数总结(数组,字符串,时间,文件操作)
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- PHP数组常用函数总结
- PHP中对数组进行操作的常用函数总结
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- PHP 数组常用函数总结
- PHP中对数组的一些常用的增、删、插操作函数总结
- php常用数组函数总结
- PHP中常用的数组函数总结
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- php常用数组函数总结
- PHP中对数组的一些常用的增、删、插操作函数总结
- web报表工具finereport常用函数的用法总结(数组函数)
- PHP header()函数常用方法总结
- PHP 数组常用函数
- PHP中常用的数组函数