PHP里的函数,能不能靠字符串的拼接和转化来实现?
迷茫
迷茫 2017-04-11 10:29:10
0
3
806

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(3)
PHPzhong

eval
call_user_func
call_user_func_array

いいねを押す +0
阿神

在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
巴扎黑

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート