PHP中的闭包(匿名函数)浅析


Posted in PHP onFebruary 07, 2015

闭包也叫匿名函数 PHP5.3 引入。

使用方法

需要调整数组元素中的值

$data = range(0, 100);//想要每个元素的值都加上.html的后缀

$suffix = '.html';
function makeSuffix($str, $suffix)

{

    return $str . $suffix;

}
$new_data = array_map(function($item) use ($suffix) {

    return makeSuffix($item, $suffix);

}, $data);

需要改变元素的结构

$arr = [

    [

        'id'=>'',

        'name'=>'',

        'create_time'=>'',

    ],

];
$new_data = array_map(function($item) {

    return ['id'=>$item['id'],'name'=>$item['name']];

}, $arr);

//如果是用foreach还需要在循环里面建立零时变量,把需要的值赋给这个变量

执行效率

$data = range(0, 50000)

//1

foreach ($data as &$value) {

    $value = makeSuffix($value, $suffix);

}
//2

foreach ($data as $value) {

    $new[] = makeSuffix($value, $suffix);

}
//3

array_map(function($item) use ($suffix) {

    return makeSuffix($item, $suffix);

}, $data);

经过5W次执行之后,从结果看1-3,大部分情况执行时间依次升高,其中一次执行结果时间如下
1:0.0260009765625

2:0.038002014160156

3:0.047003030776978

结论

闭包的代码相对优雅,但是逻辑比较容易混淆,相比其他方式执行效率相对较低,要慎用。建议在代码结构比较乱,需要封装的时候使用。

希望此文能帮到未曾使用或者对 PHP 的闭包有疑问的同学,同时如果有不对的地方欢迎支出。

PHP 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
php除数取整示例
Apr 24 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
PHP中的自动加载操作实现方法详解
Aug 06 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 #PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 #PHP
迁移PHP版本到PHP7
Feb 06 #PHP
php include类文件超时问题处理
Feb 06 #PHP
PHP的cURL库简介及使用示例
Feb 06 #PHP
PHP实用函数分享之去除多余的0
Feb 06 #PHP
php定时执行任务设置详解
Feb 06 #PHP
You might like
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
php实现微信企业转账功能
2018/10/02 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python记录程序运行时间的三种方法
2017/07/14 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
python操作mysql代码总结
2018/06/01 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Python中psutil的介绍与用法
2019/05/02 Python
python进度条显示之tqmd模块
2020/08/22 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
python -v 报错问题的解决方法
2020/09/15 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
读书演讲主持词
2014/03/18 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
大学校园招聘会感想
2015/08/10 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python
mysql sql常用语句大全
2022/06/21 MySQL