php可变函数,回调函数,匿名函数,递归函数分析

//可变函数-可把函数赋值给变量
$funHanshu = 'md5';
echo $funHanshu('king');
echo '<br>';
echo md5('king');
die;

//回调函数-可在参数里直接调用函数
function add($x,$y){
    return $x+$y;
}
function callfunction($functionName,$x,$y){
    return $functionName($x,$y);
}

echo callfunction('add',1,3);

//匿名函数(闭包函数)--就是没有名字的函数
$funs = function(){
    echo 'this is a test';
};
$funs();
//通过crete_function
$funs = create_function('','echo "this is funcion";');
$funs();
echo '<hr>';
$funs = create_function('$x,$y','return $x+$y;');
echo $funs(1,100);

$array = [1,2,3,4,5];
$arr = array_map(function($var){return $var*2;},$array);
print_r($arr);
echo '<hr>';
echo call_user_func(function($name){return "hell0 {$name}";},'king');

//递归函数--内部循环
function test($i){
    echo $i.'<br>';
    if($i > 0){
        $fun = __FUNCTION__;
        $fun($i-1);
    }
    echo $i.'<br>';
}
test(100);