欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

PHP闭包与函数回调

shiping1 的头像
 数组能够传递引用:
复制代码
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,$nameuse(&$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
来自 http://www.cnblogs.com/mxw09/archive/2011/08/06/2129452.html
普通分类: