call_user_func()

该函数其实就是用来调用并执行一个函数的,与我们通常的做法(函数名(函数参数))不同,我们用call_user_func()是这样调用函数的call_user_func(“函数名”,函数参数)

如果我们的函数有多个参数的话,我们就需要用call_user_func_array()了
call_user_func_array(“函数名”, 函数参数数组),我们将函数要调用的参数的值依次存放到一个数组中,然后传入call_user_func_array()中

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function add($var)
{
$var = $var+1;
return $var;
}
$var = 1;
$b = call_user_func('add', $var);
echo $var;
echo "<br>";
echo $b;

运行结果:

我们可以看到,传入进去的参数并没有改变其值。说明传入的应该只是形参,我们可以把形参返回赋给一个新的变量。

因为一个失误,我还发现了一个有趣的事情:
call_user_func的第一个函数是字符串,如果我们不加引号会发生什么呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function add($var)
{
$var = $var+1;
return $var;
}
$var = 1;
$b = call_user_func(add, $var); // 函数名add未加引号
echo $var;
echo "<br>";
echo $b;

运行结果:

我们可以看到,依旧可以正常运行,php自动将add假设为”add”了。


call_user_func_array()
demo如下:

1
2
3
4
5
6
7
8
<?php
function add($a, $b)
{
return $a+$b;
}
$c = call_user_func_array('add',array(1,2));
echo "$c";

运行结果:

最后更新: 2018年06月03日 23:51

原始链接: http://drac0nids.top/2018/03/05/call-user-func和call-user-func-array/

× 请我吃糖~
打赏二维码