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)
这是编写代码的好方法吗?
答案 0 :(得分: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)