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 相关文章推荐
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
thinkphp的c方法使用示例
Feb 24 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
php绘制一条直线的方法
Jan 24 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 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
用PHP产生动态的影像图
2006/10/09 PHP
php实现学生管理系统
2020/03/21 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
不安全的常用的js写法
2009/09/15 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
从0开始学Vue
2016/10/27 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python专用方法与迭代机制实例分析
2014/09/15 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python上下文管理器和with块详解
2017/09/09 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
python 字符串和整数的转换方法
2018/06/25 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
银行职业规划书范文
2013/12/28 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
房产遗嘱范本
2015/08/06 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers