php函数式编程简单示例
本文实例讲述了php函数式编程。分享给大家供大家参考,具体如下:
//函数式编程
$users=array(
array('id'=>1,'name'=>'abc1','age'=>29,'性别'=>'男'),
array('id'=>2,'name'=>'abc2','age'=>21,'性别'=>'女'),
array('id'=>3,'name'=>'abc3','age'=>23,'性别'=>'男'),
array('id'=>4,'name'=>'abc4','age'=>25,'性别'=>'女'),
array('id'=>5,'name'=>'abc5','age'=>20,'性别'=>'女'),
array('id'=>6,'name'=>'abc6','age'=>24,'性别'=>'男'),
array('id'=>7,'name'=>'abc7','age'=>28,'性别'=>'女'),
array('id'=>8,'name'=>'abc8','age'=>27,'性别'=>'男'),
);
//获取性别为女的用户
$arrayFilter=array_filter($users,function($item){
return$item['性别']=='女';
});
//不影响原数组,返回一个新数组
$arrayMap=array_map(function($item){
returnarray(
'id'=>$item['id'],
'name'=>$item['name'],
'age'=>$item['age'],
'gender'=>$item['性别']=='男'?'male':'female',
);
},$users);
//修改原数组,对年龄+10处理,同时新增索引gender,返回值1或0
array_walk($users,function(&$item,$index){
$item['gender']=$item['性别']=='男'?'male':'female';
if($index%2==0){
$item['age']+=10;
}
});
//array_reduce(array$input,callable$function[,$initial=NULL])用回调函数迭代地将数组简化为单一的值
//求最大年龄的用户,返回最大年龄用户信息
$arrayReduce=array_reduce($users,function($init,$val){
return$init['age']>$val['age']?$init:$val;
},array('age'=>0));
//求平均年龄
$avgAge=array_reduce($users,function($init,$item){
return$init+$item['age'];
},0)/count($users);
/*
*array_reduce的内部实现方式
functionarray_reduce($data,$callback,$initial){
foreach($dataas$index=>$val){
$initial=$callback($initial,$val);
}
return$initial;
}
*/
//用array_map和array_mutisort来排序
//利用array_map获取要依据排序的数组,(匿名函数create_function($args,return$val))
//$arrField=array_map(create_function('$item','return$item["age"];'),$users);【不推荐】
$arrField=array_map(function($item){
return$item['age'];
},$users);
//利用array_mutisort来进行年龄从大到小排序
$arrSort=array_multisort($arrField,SORT_DESC,$users);
//闭包实现计数器
functioncounts(){
$a=1;
//闭包,引用变量$a
returnfunction()use(&$a){
return$a++;
};
}
$countFunc=counts();
echo$countFunc();//1
echo$countFunc();//2
echo$countFunc();//3
echo$countFunc();//4
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。