我有以下两个数组(var_dumped):
array (size=3)
'param' =>
array (size=1)
0 => string 'Example' (length=7)
'page-template' => string 'general' (length=7)
'action' =>
object(Closure)[2125]
array (size=3)
'param' =>
array (size=1)
0 => string 'Example' (length=7)
'page-template' => string 'general' (length=7)
'action' =>
object(Closure)[2126]现在它们是相同的,它们甚至调用相同的函数(在'action'中),但是由于闭包,我不能对它们执行===,所以我编写了下面的检查:
foreach(self::$registeredRoutes[$routeName] as $routeActions) {
if (!is_callable($action) && !is_callable($routeActions)) {
if (isset($routeActions['param']) && isset($action['param'])
&& $routeActions['param'] === $action['param'] &&
isset($routeActions['page-template']) &&
isset($action['page-template']) &&
$routeActions['page-template'] === $action['page-template']
) {
var_dump('hello');
}
}
}接受它让我想吐是因为if的陈述。是否有一种更干净、更易测试的方式来编写这篇文章,但我仍然得到了相同的结果?
发布于 2015-05-29 17:37:11
现在它们是一样的,它们甚至调用相同的函数。
显然不是。
$func = function() {
// ...
};
$arr1 = array(
'param' => array('Example'),
'page-template' => 'general',
'action' => $func);
$arr2 = array(
'param' => array('Example'),
'page-template' => 'general',
'action' => $func);
var_dump($arr1 === $arr2); // true您也可以简单地不使用匿名函数。
https://stackoverflow.com/questions/30535567
复制相似问题