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

 更新时间:2015年02月07日 16:12:57   投稿:junjie  
这篇文章主要介绍了PHP中的闭包(匿名函数)浅析,本文给出了一个使用实例和执行效率测试,需要的朋友可以参考下

闭包也叫匿名函数 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 array_shift()用法实例分析

    PHP array_shift()用法实例分析

    这篇文章主要介绍了PHP array_shift()用法,结合实例形式分析了array_shift()的功能、使用方法、相关问题与解决方法,需要的朋友可以参考下
    2019-01-01
  • PHP中文编码小技巧

    PHP中文编码小技巧

    这篇文章主要介绍了4个实用的PHP中文编码小技巧,掌握之后再也不用为编码问题苦恼了。
    2014-12-12
  • PHP安装memcache扩展的步骤讲解

    PHP安装memcache扩展的步骤讲解

    今天小编就为大家分享一篇关于PHP安装memcache扩展的步骤讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • PHP输出缓存ob系列函数详解

    PHP输出缓存ob系列函数详解

    ob,输出缓冲区,是output buffering的简称,而不是output cache。ob用对了,是能对速度有一定的帮助,但是盲目的加上ob函数,只会增加CPU额外的负担
    2014-03-03
  • php错误提示failed to open stream: HTTP request failed!的完美解决方法

    php错误提示failed to open stream: HTTP request failed!的完美解决方法

    当使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP request failed!这个警告信息。
    2011-06-06
  • PHP封装的远程抓取网站图片并保存功能类

    PHP封装的远程抓取网站图片并保存功能类

    这篇文章主要介绍了PHP封装的远程抓取网站图片并保存功能类,结合实例形式分析了php抓取远程图片封装类的定义与简单使用方法,涉及php正则匹配与文件读写相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 如何使用PHP往windows中添加用户

    如何使用PHP往windows中添加用户

    如何使用PHP往windows中添加用户...
    2006-12-12
  • php分割合并两个字符串的函数实例

    php分割合并两个字符串的函数实例

    这篇文章主要介绍了php分割合并两个字符串的函数,实例分析了php针对字符串操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • PHP实现的同步推荐操作API接口案例分析

    PHP实现的同步推荐操作API接口案例分析

    这篇文章主要介绍了PHP实现的同步推荐操作API接口案例,结合具体实例形式分析了同步推荐操作具体的功能、接口、方法、参数及相关使用技巧,需要的朋友可以参考下
    2016-11-11
  • PHP操作Mongodb封装类完整实例

    PHP操作Mongodb封装类完整实例

    这篇文章主要介绍了PHP操作Mongodb封装类,结合完整实例形式分析了php封装的针对MongoDB数据库常见的基本配置、连接、增删改查、集合等操作定义与使用方法,需要的朋友可以参考下
    2018-06-06

最新评论