我在与空主题匹配的开关/案例中有一个preg_match
,但我不明白为什么。
这是我的代码:
switch ( $page_type ) {
case ( preg_match('/^assets_?.*/', $page_type ) ? true : false ):
// code
break;
}
$page_type
通常是一个字符串,但是我发现有些情况下它可以为NULL。由于某种原因,这里的三元数返回true
在其中一种情况下,将运行案例中的代码。
我意识到我可以通过在切换之前检查NULL值来解决此问题,但是有人可以解释为什么会发生这种情况吗?
答案 0 :(得分:2)
当$page_type
为NULL
时,preg_match()
将返回0
,三元数将返回false
。在这种情况下,它等效于:
switch (null) {
case false:
//code
break;
}
}
自null == false
起,将执行这种情况。
如果您需要测试复杂条件而不是精确匹配,请不要使用switch
,请编写普通的if
语句:
if (preg_match('/^assets_?.*/', $page_type )) {
// code
}