zoukankan      html  css  js  c++  java
  • PHP函数式编程

    什么是函数式编程

    • 与面向对象编程(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 ? '合格' : '不合格';
    });
    

    参考资料

  • 相关阅读:
    面试中遇到的几道逻辑题目
    [转]计算机专业人工智能方向——研究生面试需知的十大问题
    new、delete、析构函数、自动类型转换
    第三章 传输层
    年后排序+ST表+ksm+矩阵ksm+斐波那契数列矩阵ksm+归并排序
    DP斜率优化
    DP现阶段优化
    平衡树(一)——二叉搜索树
    NOIP 2017-day2
    2017 NOIP2017 day 1
  • 原文地址:https://www.cnblogs.com/geniusrun/p/10643361.html
Copyright © 2011-2022 走看看