1.匿名函数
$message='hello';
// 没有 "use"
$example= function () {
var_dump($message);
};
echo$example();
// 继承 $message
$example= function () use ($message) {
var_dump($message);
};
echo$example();
// Inherited variable's value is from when the function
// is defined, not when called
$message='world';
echo$example();
// Reset message
$message='hello';
// Inherit by-reference
$example= function () use (&$message) {
var_dump($message);
};
echo$example();
// The changed value in the parent scope
// is reflected inside the function call
$message='world';
echo$example();
// Closures can also accept regular arguments
$example= function ($arg) use ($message) {
var_dump($arg.' '.$message);
};
$example("hello");
?>
2.对象方法数组:
function myfunction($value,$key,$p)
{
echo "$key $p $value
";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction","has the value");
3.字符串函数名call_user_func
functionbarber($type)
{
echo"You wanted a$typehaircut, no problem\n";
}
call_user_func('barber',"mushroom");
call_user_func('barber',"shave");
?>
4.脚本执行完后 回调函数
register_shutdown_function()这个函数,能够在脚本终止前回调注册的函数,也就是当 PHP 程序执行完成后执行的函数。
register_shutdown_function 执行机制是:PHP把要调用的函数调入内存。当页面所有PHP语句都执行完成时,再调用此 函数。注意,在这个时候从内存中调用,不是从PHP页面中调用,所以上面的例子不能使用相对路径,因为PHP已经当原来的页面不存在了。就没有什么相对路 径可言。
functionshutdown()
{
echo'Script executed with success',PHP_EOL;
}
register_shutdown_function('shutdown');
?>
5.数组排序回调
functioncmp($a,$b)
{
if ($a==$b) {
return0;
}
return ($a<$b) ? -1:1;
}
$a= array(3,2,5,6,1);
usort($a,"cmp");
foreach ($aas$key=>$value) {
echo"$key:$value\n";
}
?>
6.正则回调
echopreg_replace_callback('~-([a-z])~', function ($match) {
returnstrtoupper($match[1]);
},'hello-world');
// 输出 helloWorld
?>