我想在数组中调用函数存储但在我这样做之前我想检查它是函数,字符串还是任何其他类型。
请查看我的代码
$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/>";
}
}
通过这样做,我可以检查值是否是对象,然后我调用它,但如果我传递对象它给出(当然这将给出错误)
我的目的是找到值是否为函数然后调用它。
答案 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]
。我测试了它,它对我有用。