PHP里的函数,能不能靠字符串的拼接和转化来实现?

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、貌似我思路不对?函数不属于任何类型,所以字符串无法拼接再转化成函数?请求各位大神解惑!

阅读 5k
3 个回答

eval
call_user_func
call_user_func_array

在PHP中没有函数这种数据类型,只有Callable数据类型,函数或方法通过其名字(字符串形式)或匿名函数(闭包)进行传递,因此通过这两种方法传递函数或方法时,打印出来的数据类型分别为stringClosure,这就解释了你问题中的注:上边的(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) 不需要引号 楼上的方法也行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏