PHP匿名函数(闭包函数)
来源:互联网 发布:中国保险保险网络大学 编辑:程序博客网 时间:2024/05/16 14:34
php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。
闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。
什么是闭包函数:
1、常规函数:
function functionname($a,$b){
return $a+$b;
} //可以没有分号
2、变量函数:
function functionname($a,$b){
return $a+$b;
} //可以没有分号
$var = "functionname";
echo $var(1,2);
var_dump($var); //字符串
3、匿名函数
$var = function(){
}; //一定要加分号
可以有参数,有返回值;
$var = function($a,$b){
return $a+$b;
};
var_dump($var); //对象
调用:
echo $var($a,$b);
用法:
1、替代变量函数。(参考上面2和3)
2、PHP闭包实现,主要依靠匿名函数
什么是闭包:子函数可以使用父函数的局部变量,这种行为叫做闭包!
下面来几个例子,了解一下闭包的含义;
1.
<?php
$a = 0;
function one(){
$a = 1;
$var = function($b){
echo $a;
echo $b;
};
$var('cccccc');
}
one();
//提示,$a未定义;
2.
<?php
$a = 0;
function one(){
$a = 1;
$var = function($b){
global$a;
echo $a;
echo $b;
};
$var('cccccc');
}
one();
//0cccccc 访问函数外面的$a,而不是父函数中的局部变量$a;
3.
<?php
$a = 0;
function one(){
$a = 1;
$var = function($b)use($a){
echo $a;
echo $b;
};
$var('cccccc');
}
one();
//1cccccc 使用use,访问父函数中的$a;
4.闭包函数中’&‘的使用,实现子函数与父函数变量同步。
没使用’&‘
<?php
$a = 0;
function one(){
$a = 1;
$var = function($b)use($a){
$a++;
echo $a;
echo $b;
};
$var('cccccc');
echo $a;
}
one();
//2cccccc1
使用’&‘
<?php
$a = 0;
function one(){
$a = 1;
$var = function($b)use(&$a){
$a++;
echo $a;
echo $b;
};
$var('cccccc');
echo $a;
}
one();
//2cccccc2
保护函数内的变量安全——外层函数中的变量只有内部函数可以访问到。
在内存中维持一个变量,由于闭包,外层函数中的变量一直存在于内存中,因此每次执行都会使用到。
<?php
$a = 0;
function one(){
$a = 1;
$var = function($b)use(&$a){
$a++;
echo $a;
echo $b;
};
$var('cccccc');
echo $a;
}
one();one();one();
//2cccccc2
//3cccccc3
//4cccccc4
阅读全文
1 0
- php闭包函数(匿名函数)
- PHP匿名函数(闭包函数)
- PHP匿名函数(闭包函数)
- php 闭包, 匿名函数
- php 函数【匿名函数、闭包】
- php 闭包函数(匿名函数)的应用
- PHP匿名函数 闭包简单例子
- PHP匿名函数及闭包
- PHP匿名和闭包函数
- PHP匿名函数及闭包
- php闭包和匿名函数
- php中的匿名函数和闭包
- PHP匿名函数、闭包、function use
- php 闭包与匿名函数
- php中的匿名函数和闭包
- 匿名函数(闭包)
- php的闭包(Closure)也就是匿名函数。
- php 闭包(匿名)函数和缓存
- Leetcode c语言-Longest Palindromic Substring
- 数据库(5)聚合、分组、排序、分页
- python学习(2)
- petalinux 2017.2安装指南
- CF--- PROBLEM 620 E 【思维 + DFS序 + 二进制状态】
- PHP匿名函数(闭包函数)
- Javaweb中JSP和Servlet的概述
- javascript入门第一课
- 看图说mapreduce的shuffle机制
- 页面底部功能区布局
- HDU 1003最大子段和
- Android高级进阶-换肤
- 数据结构(Java)---线性表
- HDU 3631 Shortest Path Floyd