php数组处理中有很多好用的函数,但是一开始很多人都没有去发现她!应为最近很多人问我,这里利用闲暇的时间来说说。这三个函数吧!希望大家更加透彻的理解
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);
是不是感觉这三个函数很猴撒雷呀!就说到这里吧,如果有什么不懂还可以问我。