preg_match与NULL主题匹配

时间:2019-02-28 22:33:41

标签: php regex

我在与空主题匹配的开关/案例中有一个preg_match,但我不明白为什么。

这是我的代码:

switch ( $page_type ) {
    case ( preg_match('/^assets_?.*/', $page_type ) ? true : false ):
        // code
        break;
}

$page_type通常是一个字符串,但是我发现有些情况下它可以为NULL。由于某种原因,这里的三元数返回true 在其中一种情况下,将运行案例中的代码。

我意识到我可以通过在切换之前检查NULL值来解决此问题,但是有人可以解释为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:2)

$page_typeNULL时,preg_match()将返回0,三元数将返回false。在这种情况下,它等效于:

switch (null) {
    case false:
        //code
        break;
    }
}

null == false起,将执行这种情况。

如果您需要测试复杂条件而不是精确匹配,请不要使用switch,请编写普通的if语句:

if (preg_match('/^assets_?.*/', $page_type )) {
    // code
}