php函数式编程简单示例
时间:2022-07-27
本文章向大家介绍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){
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字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
- RxJava2 实战知识梳理(2) - 计算一段时间内数据的平均值
- 用了Docker,妈妈再也不担心我的软件安装了 - 基础篇
- 适配器模式(Adapter)
- 敞开的地狱之门:Kerberos协议的滥用
- CY7C68013A的一点总结
- RxJava2 实战(1) - 后台执行耗时操作,实时通知 UI 更新
- AutoIt木马又一发:暗藏神秘照片
- css3动画从入门到精通
- ReactJs和React Native的那些事
- Linux学习-文件排序和FASTA文件操作
- Bash漏洞再次演进:缓冲区溢出导致远程任意命令执行
- Pandas,让Python像R一样处理数据,但快
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示
- 最小生成树-Prim算法和Kruskal算法
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 备战金九银十:当你裸辞遇到了面试难,你需要了解一下这些面试题
- 看完这7个测试常见问题总结,你的面试就成功了80%
- geant4入门讲解篇-2
- Geant4-怎样设置你的粒子源--精简注释+收藏版
- Geant4--一次编译,运行多个Run,极大提升模拟效率
- Geant4--是怎样使用的?--(1.信息抽取)
- ROOT-数据读取-直方图-Roofit拟合基本流程-(入门实用)
- 最简单的基于FFmpeg的直播系统开发移动端例子:IOS 视频解码器
- 哇塞哇塞--一行命令搞定视频截取和gif制作!
- 01.Android崩溃Crash封装库
- Geant4的root文件读取
- Geant4的几何边界判断代码解析
- Blender+Geant4一文入门3D模型文件导入
- Geant4官网虚拟机的完全使用入门
- VCS入门教程(四)