• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP函数式编程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 与面向对象编程(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 ? '合格' : '不合格';
});

参考资料


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP FastCGI进程管理器PHP-FPM的架构发布时间:2022-07-10
下一篇:
tp5.1nginx环境下url去掉index.php发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap