这种方法是否正确?PHP转换问题
switch ($_GET['get']){
case 'show':
echo 'show';
break;
case is_numeric($_GET['app']):
echo $_GET['app'];
break;
}
这种方法是否正确?PHP转换问题
switch ($_GET['get']){
case 'show':
echo 'show';
break;
case is_numeric($_GET['app']):
echo $_GET['app'];
break;
}
该代码是有效的。
..但没有任何意义。 – halfdan 2010-09-13 12:43:05
这是真的。代码有点难以掌握。 – 2010-09-13 12:44:49
我从来没有见过任何人在case语句后使用函数......这是一个很好的例子,为什么人们认为PHP不好。你应该在C# – thecodeassassin 2010-09-13 12:56:39
我不能告诉这是否是语法上有效,但它没有任何意义:
case is_numeric($_GET['app']):
你比较$_GET['get']
与is_numeric()
的(布尔)结果。这可能是你打算,但我怀疑它。 此外,我不确定是否可以在关键字(似乎是有效的,见我的编辑。)case
之后拥有表达式(即非简单语言结构)。
编辑
基础上comments in the PHP manual这可能是有效的。并且由于使用的松散比较switch
以上可能实际上反映了你的意图。如果是这种情况,请忽略我的回答。
中尝试这个,但它似乎工作 – 2010-09-13 12:45:15
@moustafa你用1以外的“app”值试过了吗? – 2010-09-13 12:53:34
我将成为拐角处的讽刺老人,并说我真的不知道为什么有人在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语句更可读。
对不起。我没有一个美好的一天。
是的,我知道编码风格是个人喜好的问题....对不起。希望我会很快振作起来。 – James 2010-09-13 12:59:45
Dude我真的很喜欢switch语句,在if语句中继续应用哪些内容?我认为开除开关是因为有人滥用其目的显然是错误的。 – thecodeassassin 2010-09-13 13:27:44
@stephen我刚刚查看了http://uk.php上的代码示例。网/继续,我仍然坚持我原来的观点:“这就是你所说的可读性?”也许有一个目的,一个开关语句可以用于,每次我看到一个我只是认为它可以替换一个if else块并且更具可读性。 – James 2010-09-13 16:15:02
你可以考虑使用这样的:(我会亲自取整$ _GET数组,并使用一个foreach循环,但你去那里)
function parseGet($getVar)
{
if(is_numeric($getVar)) echo $getVar;
else
{
switch($getVar)
{
case "show":
echo "show";
break;
}
}
}
parseGet($_GET['show']);
在那里做的switch语句是什么,否则如果不行? – James 2010-09-13 16:13:36
你有没有运行呢?对我来说,它看起来不会起作用,但我可能是错的。 – 2010-09-13 12:41:22