回调return php_PHP回调函数

a697aa6f166e

普通函数的定义及调用与js相似,这个定义方式无需返回值,哪怕是有返回值在声明的时候也无需添加

再后来的PHP版本中是添加了一向很有用的功能就是可在函数定义之前进行调用

echo add(1,2);

echo "";

function add($a,$b){

return $a+$b;

}

function sub($a,$b){

return $a-$b;

}

echo add(23,12);

echo "";

echo sub(23,22);

echo "";

下面是一个非常有用的功能就是变量函数,顾名思义就是将函数作为一个变量。

其优点在于用同一个变量可以调用不同的函数,非常类似于函数的多态调用。

$var="add";

echo $var(4,2);

echo "";

$var="sub";

echo $var(4,2);

echo "";

回调函数就是在给一个函数传入一个简单的参数无法解决问题的时候给他传入一个过程,从而达到目的

在函数调用时给他传入一个函数作为参数就是函数回调。

$arr=array(2,3,5,4,1,6,7,9,8);

var_dump($arr);

echo "";

//这里是自定义回调函数,返回-1是指将两个元素交换,0和1是不发生改变。

function myrule($a,$b){

if ($a>$b){

return 1;

}

elseif ($a

return -1;

}

else{

return 0;

}

}

//usort就是系统函数,但是他的第二个参数是回调函数,这个函数参数就是排序规则

usort($arr,"myrule");

var_dump($arr);

echo "";

自己写回调函数,使用变量函数以及回调完成一个简单的过滤条件,如果需多个条件同时满足给一个&&关系即可。

其中使用的变量函数可以使用系统中的一个叫做call_user_func_array()的函数进行调用,他有两个参数分别是回调函数名称,以及参数数组

call_user_func_array("demo",array(1,3));其优点在于array中的参数的数量可以比原函数的少,既有默认缺省参数的时候。

//rule1除去数组中是三的倍数的数

function rule1($a){

if ($a%3==0){

return true;

}else{

return false;

}

}

//rule2是除去数组中的回文数(从左边读与从右边读是一样的)

function rule2($a){

if ($a==strrev($a)){

return true;

}else{

return false;

}

}

function demo($n,$var){

for ($i=0;$i

if (call_user_func_array($var,array(23)))

//if ($var($i))

{

continue;

}else{

echo $i."
";

}

}

}

$var="rule1";

demo(100,$var);

echo "";

echo "


";

$var="rule2";

demo(200,$var);

echo "";

1 注意在调用对象里面的方法时我们需要传入一个匿名对象,后面指定函数名

2 而在调用类中的静态方法时只需指定类名即可。

以上两种情况都不能完全使用变量函数只能用系统的回调call_user_func_array(),只是变量函数来传参而不调用

class A{

function one(){

}

static function two(){

}

}

demo(200,array(new A,"one"));

demo(200,array("A","two"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值