php函数式编程简单示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-09 15:45:46 浏览: 评论:0
这篇文章主要介绍了php函数式编程,结合简单实例形式分析了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
 
Tags: php函数式编程
- 上一篇:php array_chunk()函数用法与注意事项
 - 下一篇:最后一页
 
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
 - PHP新手上路(一)(7)
 - 惹恼程序员的十件事(5)
 - PHP邮件发送例子,已测试成功(5)
 - 致初学者:PHP比ASP优秀的七个理由(4)
 - PHP会被淘汰吗?(4)
 - PHP新手上路(四)(4)
 - 如何去学习PHP?(2)
 - 简单入门级php分页代码(2)
 - php中邮箱email 电话等格式的验证(2)
 
