说说php几个数组处理函数
2017-03-15 16:17
127 查看
php数组处理中有很多好用的函数,但是一开始很多人都没有去发现她!应为最近很多人问我,这里利用闲暇的时间来说说。这三个函数吧!希望大家更加透彻的理解
array_filter :这个函数可以理解为数组过滤函数
例如:
这上面一个二维数组
想要匹配一个一维数组
$democard=[11,15,16];
加入现在想要过滤掉$demoarray中的age字段等于$democard
当然foreach是能够实现但是不够美化,而且显示比较臃肿
下面告诉你高达上的方法:
是不是很简单,看着就高达上
下面再来说说array_map吧
array_map 指向函数(可以这么说)
array_map(匿名回调函数,待处理数组的值);
跟array_filter区别在于该函数返回的是一个全新的值,就相当于替换了之前的一样,那你就说我用下面一个不是没什么区别,区别在于下面函数相当于重新分配了一块内存用来处理逻辑回调且返回一个值
还是例如上面的数组查询同样的效果
这样虽然达到上面的效果但是有空的数组,所以还是要用上面的array_filter清除空数组
所以说array_map适合对里面的值进行逻辑处理
跟array_map有两个类似的函数分别是:array_column()二维数组转一维数组array_walk()同样的意思只不过处理之后返回的是true和false;
再来说说三剑客函数中的array_reduce
array_reduce 对数组单一值处理可以这么理解用途其实我也说不太明白,但是我只知道怎么用她
我就用下面的例子说明吧
例如:
上面的数组我要$demoarray里面的age等于$democard的值时候加!占时想不到什么好的例子能阐述这个函数,希望能明白吧
是不是感觉这三个函数很猴撒雷呀!就说到这里吧,如果有什么不懂还可以问我。
array_filter :这个函数可以理解为数组过滤函数
例如:
$demoarray=array( 0=>array( 'name'=>"玫瑰", 'is_status'=>0, 'age'=>12, ), 1=>array( 'name'=>"月季", 'is_status'=>1, 'age'=>12, ),2=>array( 'name'=>"薰衣草", 'is_status'=>0, 'age'=>11, ) );
这上面一个二维数组
想要匹配一个一维数组
$democard=[11,15,16];
加入现在想要过滤掉$demoarray中的age字段等于$democard
当然foreach是能够实现但是不够美化,而且显示比较臃肿
下面告诉你高达上的方法:
$data=array_filter($demoarray,function($val) use ($democard){ return in_array($val['age'],$democard)?false:true; });
是不是很简单,看着就高达上
下面再来说说array_map吧
array_map 指向函数(可以这么说)
array_map(匿名回调函数,待处理数组的值);
跟array_filter区别在于该函数返回的是一个全新的值,就相当于替换了之前的一样,那你就说我用下面一个不是没什么区别,区别在于下面函数相当于重新分配了一块内存用来处理逻辑回调且返回一个值
还是例如上面的数组查询同样的效果
$data=array_map(function($val) use($democard){ $val=in_array($val['age'],$democard) ? array(): $val; return $val; },$demoarray); $data=array_filter($data);
这样虽然达到上面的效果但是有空的数组,所以还是要用上面的array_filter清除空数组
所以说array_map适合对里面的值进行逻辑处理
跟array_map有两个类似的函数分别是:array_column()二维数组转一维数组array_walk()同样的意思只不过处理之后返回的是true和false;
再来说说三剑客函数中的array_reduce
array_reduce 对数组单一值处理可以这么理解用途其实我也说不太明白,但是我只知道怎么用她
我就用下面的例子说明吧
例如:
上面的数组我要$demoarray里面的age等于$democard的值时候加!占时想不到什么好的例子能阐述这个函数,希望能明白吧
$data=array_map(function($val) use($democard){ $val['update']=array_reduce($democard,function($a,$v) use ($val){ if($val['age']==$v){ $a="匹配成功"; } return $a; },"匹配失败"); return $val; },$demoarray);
是不是感觉这三个函数很猴撒雷呀!就说到这里吧,如果有什么不懂还可以问我。
相关文章推荐
- 2011-4-27工作用到的几个php数组的处理函数
- PHP的数组处理函数库
- 几个PHP数组函数的理解
- php中日期处理的几个函数,小结一下
- PHP中的数组处理函数
- PHP--数组处理函数
- php 数组处理函数 2013.07.5
- PHP_数组常用处理函数
- php处理url的几个函数
- PHP数组处理函数的使用array_map(三)
- 【转】php几个数组函数
- PHP数组唯一函数array_unique对二维数组的处理
- php学习第三章:数组处理函数(一)
- PHP数组的相关处理函数
- php下几个常用的去空、分组、调试数组函数
- php中几个字符处理函数的说明
- php学习第三章:数组处理函数(二)
- PHP数组唯一函数array_unique对二维数组的处理
- PHP数组处理函数的使用array_reduce(二)
- php处理数组函数大全