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 相关文章推荐
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
PHP防止跨域提交表单
Nov 01 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 PHP
CI配置多数据库访问的方法
Mar 28 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
PHP实现文件上传下载实例
Oct 18 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
php pdo连接数据库操作示例
Nov 18 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
网站加速 PHP 缓冲的免费实现方法
2006/10/09 PHP
PHP 时间日期操作实战
2011/08/26 PHP
初品cakephp 入门基础
2012/02/16 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
python 中的divmod数字处理函数浅析
2017/10/17 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
python如何支持并发方法详解
2020/07/25 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
电子商务应届生求职信
2013/11/16 职场文书
英文导游欢迎词
2014/01/11 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
区级文明单位申报材料
2014/05/15 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
小学生读书笔记范文
2015/06/30 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs