PHP 匿名函数和回调函数的使用
开发环境
- phpstorm 2016.1
- php 5.6
- Mac OS 10.12.1
代码
<?php
header('content-type:text/html;charset=utf-8');
//声明函数swap,作为下面匿名函数的回调函数
function swap(&$x, &$y)
{
$temp = $x;
$x = $y;
$y = $temp;
return;
}
//call_user_func_array调用的回调函数
function add($a, $b)
{
return $a + $b;
}
//匿名函数,即不声明函数名称而使用一个变量来代替函数声明
$fuc = function ($fucName) {
$x = 1;
$y = 2;
//调用回调函数
$fucName($x, $y);
echo 'x=' . $x . ',y=' . $y;
echo '<br>';
$arr = array($x, $y);
//与$fucName($x, $y)相同效果
//这里无法调用swap方法,因为swap方法是对参数引用传值
//与call_user_func_array都无法调用引用传参形式的函数
echo call_user_func('add', $x ,$y);
};
//调用方式
$fuc('swap');
输出结果
x=2,y=1
3