zoukankan      html  css  js  c++  java
  • php闭包函数简析

    闭包函数(closures)也叫匿名函数,使用js的童鞋应该比较熟悉。PHP5.3开始引入了闭包的特性。

    声明一个匿名函数是:

    $func = function() {
         
    }; //带结束符
    

    匿名函数因为没有名字,如果要使用它,需要将其返回给一个变量。

    在闭包函数里,如果要用到上文定义的一个变量,需要使用use关键字。直接使用变量是不行的。

    <?php
    
    $arr = [1,2,3];
    
    $max = 2;
    
    //匿名函数第一个括号里的参数是调用时赋予的。use里的参数是来自父类作用域的。
    $res = array_map(function($v1) use ($max){
        if($max > 1){
            return $v1 *= 2;
        }
    }, $arr);
    
    var_dump($res);
    

    结果:

    array (size=3)
      0 => int 2
      1 => int 4
      2 => int 6
    

    PHP闭包的特性并没有太大惊喜,其实用CLASS就可以实现类似甚至强大得多的功能,更不能和js的闭包相提并论,只能期待PHP以后对闭包支持的改进。不过匿名函数还是挺有用的,比如在使用array_map、preg_replace_callback等之类的函数可以不用在外部声明回调函数了。使用闭包可以优雅的写PHP代码。

    参考:
    PHP闭包(Closure)初探 - 豆浆油条Melon的个人页面 - 开源中国社区
    http://my.oschina.net/melonol/blog/126694

  • 相关阅读:
    codeforces 484D D. Kindergarten(dp)
    codeforces 484B B. Maximum Value(二分)
    codeforces 484A A. Bits(贪心)
    51nod-1537 1537 分解(矩阵快速幂+找规律)
    大数取模
    小明的烦恼
    子网掩码
    How Many Tables
    N的N次方
    外星人的供给站
  • 原文地址:https://www.cnblogs.com/52fhy/p/4930461.html
Copyright © 2011-2022 走看看