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 相关文章推荐
实用函数7
Nov 08 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
php 中英文语言转换类代码
Aug 11 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
php递归遍历删除文件的方法
Apr 17 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
在PHP中使用XML
2006/10/09 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
php 中序列化和json使用介绍
2013/07/08 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
JS路由跳转的简单实现代码
2017/09/21 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python常用函数详解
2016/09/13 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
python 字典操作提取key,value的方法
2019/06/26 Python
pandas分区间,算频率的实例
2019/07/04 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
音乐教育感言
2014/03/05 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
幼儿园评语大全
2014/04/17 职场文书
旅游活动总结
2014/08/27 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
志愿者工作心得体会
2016/01/15 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL