有什么方法在PHP中使SWITCH运算符比较案例严格?

时间:2012-05-19 15:56:49

标签: php if-statement switch-statement

我有这样的控制结构:

switch ($var) {
   case TRUE: 
   break;

   case FALSE:
   break;

   case NULL:
   break;
}

我的NULL案例永远不会被调用,因为我在php手册中找到了:

  

请注意,开关/案例松散比较

我知道我可以使用IF代替SWITCH,但我不想,我IF's CASE SWITCH SWITCH }。

有没有办法以某种方式重写{{1}}或使用一些技巧来比较严格的值?

3 个答案:

答案 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是一个表达式(返回结果),分支仅支持单行表达式。