自己制作回调函数

<?php
//对功能要求简单的函数可以通过参数传变量而得到功能的满足,如下:
function demo($num,$n)
{
for($i=0;$i<$num;$i++)
{
if($i%$n==0)
continue;
echo $i."<br>";
}
}
//demo函数输出在0到$num中除了是$n倍数的数,由于功能相对简单所以不需要在参数中调用函数
demo(100,3);//输出除了是3的倍数的数值;


//制作回调函数1:对上面的例子如果我们要输出除了回笼数之外的数值,这时就需要借助回调函数来操作了;



function test($num,$n)
{
for ($i=0;$i<$num;$i++)
{
if($n($i))//变量函数
continue;
echo $i."<br>";
}
}
function func($a)
{
if($a==strrev($a))
return true;
else
return false;
}
test(500,"func");//无法输出像11,121和282这种类型的值


/*制作回调函数2:用call_user_func_array()这个系统函数来制作回调函数。
 制作之前需要了解的知识:参数个数如果是变化的长度时,就不能直接调用这个函数;*/

function func($one="1",$two="2",$three="3")
{
echo "---$one---$two---$three---";
}
 func();这样调用这个函数就是错误的


function funct($one="1",$two="2",$three="3")
{
echo "--$one--$two--$three--<br>";
}
call_user_func_array("func",array("111","2222","33333"));


function test($num,$n)
{
for ($i=0;$i<$num;$i++)
{
//变量函数被替换if($n($i))
if(call_user_func_array($n,array($i)))
continue;
echo $i."<br>";
}
}
function func($a)
{
if($a==strrev($a))
return true;
else
return false;
}
test(500,"func");


//制作回调函数3:调用对象中的方法或者类中的静态方法;
function test1($num,$n)
{
for ($i=0;$i<$num;$i++)
{
if(call_user_func_array($n,array($i)))//此处不能用变量函数来调用
continue;
echo $i."<br>";
}
}
class filter
{
function one($a)
{
if($a%3==0)
return true;
else
return false;
}
static function two($a)
{
if(preg_match('/3/',$a))
{
return true;
}
else
{
return false;
}

}
}
test1(500,array(new filter(),"one"));
test1(300,array("filter","two"));
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值