搜尋

首頁  >  問答  >  主體

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

迷茫迷茫2816 天前813

全部回覆(3)我來回復

  • PHPz

    PHPz2017-04-11 10:31:10

    eval
    call_user_func
    call_user_func_array

    回覆
    0
  • 阿神

    阿神2017-04-11 10:31:10

    在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]);

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-11 10:31:10

    $a($b) 不需要引号 楼上的方法也行

    回覆
    0
  • 取消回覆