2
switch (true){
    case stripos($_SERVER['SERVER_NAME'],"mydomain.com", 0) :

        //do something 
        break;

        /*
        stripos returns 4 ( which in turn evaluates as TRUE )  
        when the current URL is www.mydomain.com
        */


    default:

        /*
        stripos returns 0 ( which in turn evaluates as FALSE )  
        when the current URL is mydomain.com
        */


}   

当 stripos 在大海捞针中找到针时,返回 0 或向上。当 stripos 没有找到针时,它返回 FALSE。这种方法可能有一些优点。但我不喜欢那样!

我来自VB背景。在那里,instr 函数(相当于 strpos)在找不到针头时返回 0,如果找到针头则返回 1 或以上。

所以上面的代码永远不会引起问题。

你如何优雅地处理 PHP 中的这种情况?这里的最佳实践方法是什么?

另外,换一种说法,您对使用

switch(true) 

这是开始编写代码的好方法吗?

4

1 回答 1

5

如果大海捞针中不存在针,strpos 将返回 false。默认情况下(使用非严格比较),PHP 会将 0 和 false 视为等价。您需要使用严格的比较。

var_dump (strpos ('The quick brown fox jumps over the lazy dog', 'dog') !== false); // bool (true)
var_dump (strpos ('The quick brown fox jumps over the lazy dog', 'The') !== false); // bool (true)
var_dump (strpos ('The quick brown fox jumps over the lazy dog', 'cat') !== false); // bool (false)
于 2012-04-08T20:00:17.083 回答