5

我有这样的控制结构:

switch ($var) {
   case TRUE: 
   break;

   case FALSE:
   break;

   case NULL:
   break;
}

而且我的NULL案例从未被调用,因为正如我在 php 手册中发现的那样:

请注意, switch/case 确实比较松散

我知道我可以使用IFSWITCH但我不喜欢,我的IF's每个.CASESWITCH

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

4

3 回答 3

7

是的,你可以

switch (true) {
   case $var === TRUE: 
   break;

   case $var === FALSE:
   break;

   case $var === NULL:
   break;
}
于 2012-05-19T15:59:12.450 回答
0

这就是 switch 构造的工作方式——你无能为力。

我看到的唯一方法是对 PHP 源代码进行一些修改并重新编译它;但是,然后,您将不再运行“PHP” (并且您的代码将依赖于“PHP”以外的其他东西)

于 2012-05-19T15:59:09.433 回答
0

2020 年更新

PHP 8 有一个严格的switch; match.

match ($var) {
  true => ...,
  false => ...,
  null => ...,
};

与switch有一些细微的差别。match是一个表达式(返回结果),分支只支持单行表达式。

于 2020-12-03T21:44:12.240 回答