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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
PHP中常用的魔术方法
Apr 28 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 PHP
PHP应用跨时区功能的实现方法
Mar 21 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
php 生成文字png图片的代码
2011/04/17 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php实现异步数据调用的方法
2015/12/24 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
JS的get和set使用示例
2014/02/20 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 中pandas.read_excel详细介绍
2017/06/23 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
django迁移文件migrations的实现
2020/03/31 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
python如何构建mock接口服务
2021/01/28 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
护士个人简历自荐信
2013/10/18 职场文书
应用数学自荐书范文
2013/11/24 职场文书
甜点店创业计划书
2014/01/27 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
《包身工》教学反思
2016/02/23 职场文书
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL