我有这样的控制结构:
switch ($var) {
case TRUE:
break;
case FALSE:
break;
case NULL:
break;
}
我的NULL
案例永远不会被调用,因为我在php手册中找到了:
请注意,开关/案例松散比较。
我知道我可以使用IF
代替SWITCH
,但我不想,我IF's
CASE
SWITCH
SWITCH
}。
有没有办法以某种方式重写{{1}}或使用一些技巧来比较严格的值?
答案 0 :(得分:7)
是的,你可以做到
switch (true) {
case $var === TRUE:
break;
case $var === FALSE:
break;
case $var === NULL:
break;
}
答案 1 :(得分:0)
这就是交换机构造的工作方式 - 你无能为力。
我看到的唯一方法是对PHP源代码进行一些修改并重新编译它;但是,那么,你将不再运行“PHP”(并且你的代码将依赖于“PHP”以外的东西)
答案 2 :(得分:0)
2020更新
PHP 8的严格版本为switch
; match
。
match ($var) {
true => ...,
false => ...,
null => ...,
};
开关之间有些细微的差异。 match
是一个表达式(返回结果),分支仅支持单行表达式。