PHP函数式编程
程序员文章站
2022-07-04 23:22:57
什么是函数式编程 与面向对象编程(Object oriented programming)和过程式编程(Procedural programming)并列的编程范式。 最主要的特征是,函数是第一等公民。 强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 MapRed ......
什么是函数式编程
- 与面向对象编程(object-oriented programming)和过程式编程(procedural programming)并列的编程范式。
- 最主要的特征是,函数是第一等公民。
- 强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 mapreduce 算法。
- 只有纯的、没有副作用的函数,才是合格的函数。
php中的函数
例子:
$grade = array( array('id' => 1, 'subject' => 'chinese', 'score' => 82), array('id' => 2, 'subject' => 'math', 'score' => 98), array('id' => 3, 'subject' => 'english', 'score' => 78), );
array_filter — 用回调函数过滤数组中的单元
//获取成绩大于80分的学科 $arrayfilter = array_filter($grade, function($item){ return $item['score'] > 80 ; });
array_map() - 为数组的每个元素应用回调函数
// 不影响原数组,返回一个新数组 $arraymap = array_map(function($item){ return array( 'id' => $item['id'], 'subject' => $item['subject'], 'score' => $item['score'], 'grade' => $item['score'] >= 60 ? '合格' : '不合格', ); }, $grade);
array_reduce() - 用回调函数迭代地将数组简化为单一的值
// 求分数最高的科目,返回最大科目信息 $maxscore = array_reduce($grade, function($init, $val){ return $init['score'] > $val['score'] ? $init : $val; }, array('score' => 0)); // 求平均成绩 $avgscore = array_reduce($grade, function($init, $item){ return $init + $item['score']; }, 0) / count($grade);
array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
// 修改原数组 array_walk($grade, function(&$item, $index){ $item['grade'] = $item['score'] >= 60 ? '合格' : '不合格'; });
参考资料
推荐阅读
-
php的POSIX 函数以及进程测试的深入分析
-
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
-
PHP file_get_contents函数读取远程数据超时的解决方法
-
php使用array_rand()函数从数组中随机选择一个或多个元素
-
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
-
JavaScript的函数式编程基础指南
-
php中利用str_pad函数生成数字递增形式的产品编号
-
如何使用PHP实现javascript的escape和unescape函数
-
php小经验:解析preg_match与preg_match_all 函数
-
php中eval函数的危害与正确禁用方法