2012-05-19 42 views
5

我有这样的控制结构:有没有什么办法可以让开发人员比较严格?

switch ($var) { 
    case TRUE: 
    break; 

    case FALSE: 
    break; 

    case NULL: 
    break; 
} 

而且我NULL情况下,则永远不会调用因为我的PHP手册中找到:

注意交换机/案例确实松动比较

我知道我可以使用IF代替SWITCH但我不喜欢,我已经有些IF'sSWITCH的每CASE

有什么办法重写SWITCH或使用一些技巧,使其比较值严格?

回答

7

是的,你可以做

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

    case $var === FALSE: 
    break; 

    case $var === NULL: 
    break; 
} 
+0

的最佳解决方案,谢谢。但它是否会让PHP每次都评估每个CASE? – Green

+2

@Green它与每个switch语句完全相同 - 输入第一个计算结果为true的情况,并在第一个break语句中停止执行 –

0

这就是交换机构造的工作方式 - 对此你无能为力。

我看到的唯一方法是对PHP源代码进行一些修改并重新编译它;但是,那么,你就不会竞选“PHP”了(和你的代码将依靠的东西比“PHP”其他人)

相关问题