Rumah > Soal Jawab > teks badan
1、我想让两个字符串拼接成一个函数,不知道能不能实现?或者说一个和函数一模一样的字符串能不能转换成函数?
2、举个例子,decbin()是一个Math函数,用来将十进制数转换成二进制数。
<?php
$a=decbin(10);
echo $a;
?>
最后输出结果是:1010。
3、我尝试用以下方法试过,都不能实现。
(1)
<?php
$a="decbin";
$b=10;
$c="$a"("$b");
echo $a;
?>
(2)
<?php
$a="decbin";
$b=10;
$c="$a"."("."$b".")";
echo $c;
?>
注:上边的(2)中输出的结果是字符串类型的"decbin(10)",并不是一个函数。
4、貌似我思路不对?函数不属于任何类型,所以字符串无法拼接再转化成函数?请求各位大神解惑!
阿神2017-04-11 10:31:10
在PHP中没有函数
这种数据类型,只有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]);