PHP闭包与函数回调
2011-08-06 14:43
253 查看
数组能够传递引用:
function fun($arr)
{
echo var_dump($arr);
$arr[0]=99;
$arr[1]=100;
}
$a=123;
$b=456;
fun(array(&$a,&$b)); echo "$a,$b<br/>";
PHP5.3.0新增了闭包支持:
function funtest()
{
$a=18;
$b="Ly";
$fun=function($num,$name) use(&$a,&$b)
{
//echo "\$a:$a,\$b:$b<br/>";//输出
$a=$num;
$b=$name;
};
echo "$b:$a<br/>";
$fun(30,'wq');
echo "$b:$a<br/>";
}
funtest();
$fun=function($msg){
echo "$msg called by other function<br/>";
};
$fun("fun");
call_user_func($fun,"wq");
$name="array";
call_user_func_array($fun,array(&$name));
函数回调:
$arr=array(6,5,8,9,0,2,2);
function sortarr($a,$b)
{
return $a>$b?1:-1;
}
usort($arr,"sortarr");
foreach($arr as $e)
{
echo "$e,";
}
echo "<br/>";
usort($arr,create_function('$a,$b','return $a>$b?-1:1;')); //注意,这里使用create_function创建匿名函数,一定要使用单引号,否则会报错
foreach($arr as $e)
{
echo "$e,";
}//匿名函数的调用
call_user_func(function (){echo "<br/>ff";});
call_user_func(create_function('','echo "<br/>ff";'));
自己写的函数进行函数回调:
<?php
function fun($fun,$num)
{
$fun($num);
}
function writenum()
{
echo func_get_arg(0)."<br/>";
}
fun(create_function('$num','echo "$num<br/>";'),123);
fun("writenum",123);
fun(function(){echo func_get_arg(0)."<br/>";},123);
?>
function fun($arr)
{
echo var_dump($arr);
$arr[0]=99;
$arr[1]=100;
}
$a=123;
$b=456;
fun(array(&$a,&$b)); echo "$a,$b<br/>";
PHP5.3.0新增了闭包支持:
function funtest()
{
$a=18;
$b="Ly";
$fun=function($num,$name) use(&$a,&$b)
{
//echo "\$a:$a,\$b:$b<br/>";//输出
$a=$num;
$b=$name;
};
echo "$b:$a<br/>";
$fun(30,'wq');
echo "$b:$a<br/>";
}
funtest();
$fun=function($msg){
echo "$msg called by other function<br/>";
};
$fun("fun");
call_user_func($fun,"wq");
$name="array";
call_user_func_array($fun,array(&$name));
函数回调:
$arr=array(6,5,8,9,0,2,2);
function sortarr($a,$b)
{
return $a>$b?1:-1;
}
usort($arr,"sortarr");
foreach($arr as $e)
{
echo "$e,";
}
echo "<br/>";
usort($arr,create_function('$a,$b','return $a>$b?-1:1;')); //注意,这里使用create_function创建匿名函数,一定要使用单引号,否则会报错
foreach($arr as $e)
{
echo "$e,";
}//匿名函数的调用
call_user_func(function (){echo "<br/>ff";});
call_user_func(create_function('','echo "<br/>ff";'));
自己写的函数进行函数回调:
<?php
function fun($fun,$num)
{
$fun($num);
}
function writenum()
{
echo func_get_arg(0)."<br/>";
}
fun(create_function('$num','echo "$num<br/>";'),123);
fun("writenum",123);
fun(function(){echo func_get_arg(0)."<br/>";},123);
?>
相关文章推荐
- PHP 的异常处理、错误的抛出及错误回调函数
- js for循环调用ajax 函数封装 闭包 回调
- 小解 php闭包 lambda 函数
- PHP 回调、匿名函数和闭包
- 回调函数和闭包的理解
- php 回调 匿名函数 闭包
- PHP-函数回调的四种形式(笔记)
- 4种PHP回调函数风格
- php 闭包(匿名)函数和缓存
- [PHP]将回调函数作用到给定数组的单元上
- php的数组遍历函数回调匿名函数
- 回调、匿名函数、闭包在PHP中的应用
- PHP将回调函数作用到给定数组单元的方法
- php 系统函数回调
- php基于闭包实现函数的自调用(递归)实例分析
- paip.函数方法回调机制跟java php python c++的实现
- paip.函数方法回调机制跟java php python c++的实现
- [李景山php] 深入理解PHP内核[读书笔记]--第四章:函数的实现 --匿名函数及闭包
- PHP将回调函数作用到给定数组单元的方法
- php基于闭包实现函数的自调用(递归)实例分析