一,变量可以直接传递函数
<?php
function demo($num , $n )//$n是个函数
{for($i=0;$i<$num;++$i){if($n($i)){echo $i."<br>";}}
}
function funcall($i)
{return $i%2==0;
}
demo(100,"funcall");
二, 使用call_user_func_array
<?php
function demo($num , $n )
{for($i=0;$i<$num;++$i){if(call_user_func_array($n,array($i))){echo $i."<br>";}}
}
function funcall($i)
{return $i%2==0;
}
demo(100,"funcall");
三,类中函数作为回调函数
(1)类成员函数
<?php
function demo($num , $n )//$n是个函数
{for($i=0;$i<$num;++$i){if($n($i))//if(call_user_func_array($n,array($i))){echo $i."<br>";}}
}
function funcall($i)
{return $i%2==0;
}class Filter
{function fun($i){return $i%2==0;}static function sfun($i){return $i%3 ==0;}
}
demo(100,array(new Filter(),"fun"));
(2)类静态函数
<?php
function demo($num , $n )//$n是个函数
{for($i=0;$i<$num;++$i){if($n($i))//if(call_user_func_array($n,array($i))){echo $i."<br>";}}
}
function funcall($i)
{return $i%2==0;
}class Filter
{function fun($i){return $i%2==0;}static function sfun($i){return $i%3 ==0;}
}
demo(100,array("Filter","sfun"));