<?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
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~