这种方法对吗?
switch ($_GET['get']){
case 'show':
echo 'show';
break;
case is_numeric($_GET['app']):
echo $_GET['app'];
break;
}
答案 0 :(得分:4)
我无法判断这是否在语法上有效但是没有意义:
case is_numeric($_GET['app']):
您将$_GET['get']
与is_numeric()
的(布尔)结果进行比较。这个可能是你想要的,但我对此表示怀疑。 此外,我不确定你是否可以在(似乎有效,参见我的编辑。)< / p>
case
关键字之后使用表达式(即非简单语言结构)。
修改强>
根据{{3}},它可能有效。由于switch
使用的松散比较,上述可能实际上反映了您的意图。如果是这种情况,请忽略我的回答。
答案 1 :(得分:2)
代码有效。
答案 2 :(得分:1)
我将成为角落里那个讽刺的老头说我真的不知道为什么有人在PHP中使用switch语句。真。他们太可怕了。
这是你想要做的吗?
if ($_GET['get'] == "show") {
echo "show";
} else if (is_numeric($_GET['app'])) {
echo $_GET['app'];
}
这简单易懂!
回答我的问题是避免两次计算同一件事。例如,这很糟糕:
if (BigSlowFunctionCall() == 1) {
...
} else if (BigSlowFunctionCall() == 2) {
...
}
如果它是2,那么你刚刚调用BigSlowFunctionCall()两次 - 效率不高。但是这就是你如何解决这个问题:
$resultOfBigSlowFunctionCall = BigSlowFunctionCall();
if ($resultOfBigSlowFunctionCall == 1) {
...
} else if ($resultOfBigSlowFunctionCall == 2) {
...
}
我认为它仍然比switch语句更具可读性。
对不起。我没有过好日子。
答案 3 :(得分:1)
您可以考虑使用以下内容:(我个人会获取整个$ _GET数组并使用foreach循环,但是你去了)
function parseGet($getVar)
{
if(is_numeric($getVar)) echo $getVar;
else
{
switch($getVar)
{
case "show":
echo "show";
break;
}
}
}
parseGet($_GET['show']);