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_xmlhttp 乱码问题解决方法
Aug 07 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
laravel安装和配置教程
Oct 29 PHP
PHP中FTP相关函数小结
Jul 15 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
php引用传递
Apr 01 PHP
php去除deprecated的实例方法
Nov 17 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
PHP4引用文件语句的对比
2006/10/09 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
jquery cookie插件代码类
2009/05/26 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
js 编写规范
2010/03/03 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
艺术系应届生的自我评价
2013/10/19 职场文书
最新教师自我评价分享
2013/11/12 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
公司授权委托书范文
2014/09/21 职场文书
党支部考察意见范文
2015/06/02 职场文书
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技