时间: 2020-12-3|tag: 21次围观|0 条评论

<?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"));
?>

原文链接:https://blog.csdn.net/living_ren/article/details/73142786

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《自己制作回调函数
   

还没有人抢沙发呢~