| 
 | 
	
 
 
  回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。 
  回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调函数,在需要调用时,只需引用这个函数指针和相关的参数指针。 
  其实:回调就是该函数写在高层,低层通过一个函数指针保存这个函数,在某个事件的触发下,低层通过该函数指针调用高层那个函数。 
回调函数就是那些自己写的,但是不是自己来调,而是给别人来掉的函数。 
就像下面的odd()和even()函数一样。 
<?php 
function odd($var) 
{ 
   return($var % 2 == 1); 
} 
  function even($var) 
{ 
   return($var % 2 == 0); 
} 
  $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5); 
$array2 = array(6, 7, 8, 9, 10, 11, 12); 
  echo "Odd :\n"; 
print_r(array_filter($array1, "odd"));//这里把array1的值依次传入到odd这个函数里面,这种方式就称为回调 
echo "Even:\n"; 
print_r(array_filter($array2, "even")); 
  ?>  
  下面这个例子实现函数的回调 
<? 
function fnCallBack($msg1, $msg2) 
   { 
     echo 'msg1:'.$msg1; 
      echo '<br/>'; 
      echo 'msg2:'.$msg2; 
   } 
   $fnName = 'fnCallBack';//函数名 
   $params = array('hello', 'world');//将要传入到函数里面的参数 
   call_user_func_array($fnName, $params); 
?> |   
 
 
 
 | 
  
 |