84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
1、我想让两个字符串拼接成一个函数,不知道能不能实现?或者说一个和函数一模一样的字符串能不能转换成函数?
2、举个例子,decbin()是一个Math函数,用来将十进制数转换成二进制数。
最后输出结果是:1010。
3、我尝试用以下方法试过,都不能实现。
(1) (2) 注:上边的(2)中输出的结果是字符串类型的"decbin(10)",并不是一个函数。
4、貌似我思路不对?函数不属于任何类型,所以字符串无法拼接再转化成函数?请求各位大神解惑!
业精于勤,荒于嬉;行成于思,毁于随。
evalcall_user_funccall_user_func_array
在PHP中没有函数这种数据类型,只有Callable数据类型,函数或方法通过其名字(字符串形式)或匿名函数(闭包)进行传递,因此通过这两种方法传递函数或方法时,打印出来的数据类型分别为string和Closure,这就解释了你问题中的注:上边的(2)中输出的结果是字符串类型的"decbin(10)",并不是一个函数。。要判断是不是函数或方法,需要使用is_callable()。
函数
Callable
string
Closure
注:上边的(2)中输出的结果是字符串类型的"decbin(10)",并不是一个函数。
is_callable()
$func = 'decbin'; var_dump(is_callable($func)); // bool(true) $func(10); call_user_func($func, 10); call_user_func_array($func, [10]);
$a($b) 不需要引号 楼上的方法也行
eval
call_user_func
call_user_func_array
在PHP中没有
函数
这种数据类型,只有Callable
数据类型,函数或方法通过其名字(字符串形式)或匿名函数(闭包)进行传递,因此通过这两种方法传递函数或方法时,打印出来的数据类型分别为string
和Closure
,这就解释了你问题中的注:上边的(2)中输出的结果是字符串类型的"decbin(10)",并不是一个函数。
。要判断是不是函数或方法,需要使用is_callable()
。$a($b) 不需要引号 楼上的方法也行