函数存储在数组中

时间:2014-01-24 06:37:37

标签: php arrays

我想在数组中调用函数存储但在我这样做之前我想检查它是函数,字符串还是任何其他类型。

请查看我的代码

$a=new stdClass();
$array = array(function() {
return "Bhavik Patel";
}, "1213",$a);

foreach ($array as $key => $value) {
    if (is_object($value)) {
        echo $value() . "<br/>";
    } else {
        echo $value . "<br/>";
    }
}

通过这样做,我可以检查值是否是对象,然后我调用它,但如果我传递对象它给出(当然这将给出错误)

我的目的是找到值是否为函数然后调用它。

3 个答案:

答案 0 :(得分:3)

要专门检查匿名函数,您可以针对\Closure测试值,如下所示:

if ($value instanceof \Closure) {
    echo $value(), "\n";
} else {
    echo $value;
}

is_callable()的问题在于,如果您的值为"explode",则会返回true,这显然不是您想要的。

答案 1 :(得分:0)

is_callable()会对你有帮助,但请注意,如果你传递这样的数组

array('object or class','method')

is_callable()返回true,所以最好检查它不是数组

if (is_callable($value) && !is_array($value)) {.....}

请参阅is_callable

答案 2 :(得分:0)

在PHP中尝试[is_callable][1]。我测试了它,它对我有用。