php函数式编程简单示例


Posted in PHP onAugust 08, 2019

本文实例讲述了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){
  return array(
    '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 的内部实现方式
function array_reduce($data, $callback, $initial) {
  foreach ($data as $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);
//闭包实现计数器
function counts() {
  $a = 1;
  // 闭包,引用变量$a
  return function() use(&$a) {
    return $a++;
  };
}
$countFunc = counts();
echo $countFunc(); // 1
echo $countFunc(); // 2
echo $countFunc(); // 3
echo $countFunc(); // 4

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
对盗链说再见...
Oct 09 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
PHP PDOStatement::errorCode讲解
Jan 31 PHP
因str_replace导致的注入问题总结
Aug 08 #PHP
PHP goto语句用法实例
Aug 06 #PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 #PHP
Yii框架核心组件类实例详解
Aug 06 #PHP
PHP使用Session实现上传进度功能详解
Aug 06 #PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 #PHP
PHP中的自动加载操作实现方法详解
Aug 06 #PHP
You might like
thinkphp 多表 事务详解
2013/06/17 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
建筑学推荐信
2013/11/03 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
参观接待方案
2014/03/17 职场文书
个人委托书怎么写
2014/04/04 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
大学军训决心书
2015/02/05 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
合作协议书格式范本
2016/03/21 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
python pygame入门教程
2021/06/01 Python