Jos*_*osh 15 php syntax switch-statement
我已经测试了这个并且工作正常,但看起来......很奇怪......对我而言.我是否应该担心这是非标准形式,将在PHP的未来版本中删除,或者它可能会停止工作?我总是有一个默认案例作为最后一个案例,从来没有作为第一个案例......
switch($kind)
{
default:
// The kind wasn't valid, set it to the default
$kind = 'kind1';
// and fall through:
case 'kind1':
// Do some stuff for kind 1 here
break;
case 'kind2':
// do some stuff for kind2 here
break;
// [...]
case 'kindn':
// do some stuff for kindn here
break;
}
// some more stuff that uses $kind here...
Run Code Online (Sandbox Code Playgroud)
(如果不明显我正在尝试做的是确保$ kind是有效的,因此默认:case.但是交换机也执行一些操作,然后在切换后使用$ kind.这就是为什么默认:落到第一个案例,并设置$ kind)
建议?这是正常/有效的语法吗?
Pau*_*xon 22
这是一种不同寻常的习语,当你阅读它时会引起一点停顿,这是一个"嗯?"的时刻.它有效,但大多数人可能希望在最后找到默认情况:
switch($kind)
{
case 'kind2':
// do some stuff for kind2 here
break;
// [...]
case 'kindn':
// do some stuff for kindn here
break;
case 'kind1':
default:
// Assume kind1
$kind = 'kind1';
break;
}
Run Code Online (Sandbox Code Playgroud)
小智 10
如果有人通过谷歌找到这个页面,我做了:
我和Josh想知道同样的事情 - 所以...有一件事是标准,我认为我们都应该更加努力地坚持,但另一件事是黑客攻击(在:利用 - 每种可能性的方式).
虽然它很丑/很奇怪/不正常 - 这是可能的,恕我直言可能在一些罕见的情况下有用......
考虑以下:
$color = "greenish";
//$color = "green";
switch($color) {
default:
echo "no colors were selected so the color is: ";
case "red":
echo "red<br />\n";
break;
case "blue":
echo "blue<br />\n";
break;
case "green":
echo "green<br />\n";
break;
}
Run Code Online (Sandbox Code Playgroud)
如果$color = "greenish";代码将打印
没有选择颜色,因此颜色为红色
如果$color = "green";或任何其他定义的情况,它只会打印颜色.
它知道这不是最好的例子,但你明白了;)希望它对某人有所帮助.
这就是我可能会做的......它很容易养眼并保持功能。
switch($kind)
{
default :
case 'kind1':
$kind = "kind1";
// Do stuff for kind 1
break;
case 'kind2':
// do stuff for kind2
break;
case 'kindn':
// do stuff for kindn
break;
}
Run Code Online (Sandbox Code Playgroud)
出于同样的原因,它看起来很奇怪
else {
echo "lol";
}
if (1 == 1) {
echo "bbq";
}
Run Code Online (Sandbox Code Playgroud)
如果它是有效的话,看起来会很奇怪。如果仅仅因为这个原因我就会避免它。
此外,您知道,每次向某人展示代码时,您都必须解释说,将案例放在第一位default是故意的;这通常表明这不是一个好主意。