首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用更干净的方式写这张支票?

用更干净的方式写这张支票?
EN

Stack Overflow用户
提问于 2015-05-29 17:23:26
回答 1查看 61关注 0票数 0

我有以下两个数组(var_dumped):

代码语言:javascript
复制
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'中),但是由于闭包,我不能对它们执行===,所以我编写了下面的检查:

代码语言:javascript
复制
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的陈述。是否有一种更干净、更易测试的方式来编写这篇文章,但我仍然得到了相同的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 17:37:11

现在它们是一样的,它们甚至调用相同的函数。

显然不是。

代码语言:javascript
复制
$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

您也可以简单地不使用匿名函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30535567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档