七寸殇

  • 主页
  • 随笔
所有文章 友链 关于我

七寸殇

  • 主页
  • 随笔

php闭包及&引用的使用

2018-02-26

php闭包(匿名函数)

php闭包,也叫匿名函数,和普通变量的赋值方法是一样的,最后要加上分号;

如果你需要延迟绑定use里面的变量,你就需要使用引用,否则在定义的时候就会做一份拷贝放到use中:

1
2
3
4
5
6
7
8
$num = 0;

$one = function() use($num) {echo $num;};
$two = function() use(&$num) {echo $num;};
$num++;

$one();//输出0
$two();//输出1

使用场景:

使用场景以底层框架为主,实际应用中用的较少。

  • 自动加载

    1
    2
    3
    4
    spl_autoload_register(function($class){
    $class = str_replace('\\', '/', $class);
    require_once $class;
    });
  • 循环,代替foreach

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    $arr = ['a', 'b', '1', 0, 'ads', 'dsasa'];
    $arr = array_map(function($value){
    return $value . '_aaa';
    }, $arr);
    print_r($arr);

    /*
    Array
    (
    [0] => a_aaa
    [1] => b_aaa
    [2] => 1_aaa
    [3] => 0_aaa
    [4] => ads_aaa
    [5] => dsasa_aaa
    )
    */

    $arr = ['a', 'b', '1', 0, 'ads', 'dsasa'];
    array_walk($arr, function(&$value, $key){
    echo $key . ' => ' . $value . "\n";
    $value = $value . '_aaa';
    });
    print_r($arr);
    /**
    0 => a
    1 => b
    2 => 1
    3 => 0
    4 => ads
    5 => dsasa
    Array
    (
    [0] => a_aaa
    [1] => b_aaa
    [2] => 1_aaa
    [3] => 0_aaa
    [4] => ads_aaa
    [5] => dsasa_aaa
    )
    **/
赏

谢谢你请我吃糖果

支付宝
微信
  • php
  • 闭包
  • 引用

扫一扫,分享到微信

微信分享二维码
php通过get_cfg_var函数获取配置信息
如何在没有第三个变量的情况下交换两个变量的值?
© 2023 七寸殇
总访问量:, 页面访问量
  • 所有文章
  • 友链
  • 关于我

tag:

  • composer
  • 镜像
  • laravel
  • ab.exe
  • 性能测试
  • apache
  • 交换变量
  • 面试题
  • 位运算
  • 阿里云
  • git
  • django
  • python
  • hexo
  • blog
  • github
  • docker
  • docker-compose
  • eclipse
  • tomcat
  • 环境变量
  • requests
  • api
  • php
  • 下载完成
  • mysql
  • 数据库
  • 脏读
  • 不可重复读
  • 幻读
  • merge
  • 分支
  • 合并
  • abort
  • push
  • remote
  • pull
  • .gitignore
  • reset
  • hooks
  • redis
  • appends
  • 分页
  • paginate
  • header
  • response
  • linux
  • php7
  • nginx
  • 500错误
  • php.ini
  • display_errors
  • Auth
  • guard
  • session
  • 路由
  • route
  • validate
  • 验证
  • group_concat
  • concat
  • raw
  • 数据库查询
  • 一对多
  • 笛卡尔集
  • lnmp
  • find
  • 远程登录
  • 忘记密码
  • ThinkPHP
  • url重写
  • 路由重写
  • proxy_pass
  • 反向代理
  • foreach
  • 最后一个元素
  • get_cfg_var
  • ini_set
  • ini_get
  • ini_get_all
  • ini_restore
  • 反射
  • 类的所有方法
  • 命名规范
  • 闭包
  • 引用
  • pytesser
  • 图片识别
  • windows
  • tesseract-ocr
  • RESTful
  • 无状态
  • Statelessness
  • selenium
  • phantomjs
  • 爬虫
  • svn
  • 微信小程序
  • wxParse
  • 微信
  • 成语猜猜看
  • vagrant
  • while
  • 素数
  • 算法
  • ssh
  • setData
  • 上拉加载
  • log
  • 闲鱼
  • html

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

Make More Time