PHP编程
Completion requirements
switch
结构
switch
语句
switch
案例
如何工作 这里是一个简单的游戏示例,用户输入 $user_command
后,根据不同的输入执行不同的函数:
if ($user_command == "n") {
go_north();
} else if ($user_command == "e") {
go_east();
} else if ($user_command == "s") {
go_south();
} else if ($user_command == "w") {
go_west();
} else {
do_something_else();
}
显然,这里有很多重复的代码。switch
语句可以帮助你避免这些冗余代码。它允许程序员反复将某个变量的值与一组可能的值进行比较,并根据结果执行代码。下面是使用 switch
语句的语法,和使用 if
语句编写的相同代码进行对比:
if 语句风格 |
switch 语句风格 |
---|---|
```php | ```php |
if ($firstvariable == 'comparison1' | |
doSomething(); | case 'comparison1': |
doSomethingElse(); | case 'comparison2': |
} else if ($firstvariable == 'comparison3') { | doSomething(); |
doAThirdThing(); | doSomethingElse(); |
} else { | break; |
launchMissiles(); | case 'comparison3': |
} | doAThirdThing(); |
// Look at how much switch case saves you! | break; |
``` | default: |
launchMissiles(); | |
break; | |
``` | } |
``` | ``` |
switch
语句能够避免重复写 $firstvariable
,并使代码看起来更简洁(尤其是当代码包含多个简单的 if
语句时)。回到我们的 Zorkmid 示例程序,我们可以将原始代码:
原始代码 vs switch-case
代码
原始代码:
if ($user_command == "n") {
go_north();
} else if ($user_command == "e") {
go_east();
} else if ($user_command == "s") {
go_south();
} else if ($user_command == "w") {
go_west();
} else {
do_something_else();
}
switch-case
代码:
switch($user_command) {
case 'n':
go_north();
break;
case 'e':
go_east();
break;
case 's':
go_south();
break;
case 'w':
go_west();
break;
default:
do_something_else();
break;
}
语法
switch($var) {
case [value]:
[code]
break;
case [value]:
[code]
break;
...
default:
[code]
break;
}
在这个例子中,$var
是第一个要比较的变量。然后,这个变量会依次与每个 case
语句进行比较,直到找到匹配的项。此时,代码会执行,直到遇到 break
语句(这会让你完全退出 case
语句)。
使用 switch-case
语句的注意事项
使用 switch-case
时,别忘了在适当的地方使用 break
!如果忘了,可能会导致不必要的函数执行。然而,在某些情况下,不使用 break
可能是有用的。请考虑以下示例:
switch ($n) {
case 0:
case 1:
case 2:
// 仅当 $n 为 0、1 或 2 时执行
doSomethingForNumbers2OrSmaller();
break;
case 3:
// 仅当 $n 为 3 时执行
doSomethingForNumber3();
default:
// 仅当 $n 为 3 或更大时执行
doSomethingForNumbers3OrBigger();
break;
}
这种编码方式有时会受到批评,因为它并不总是能够清楚地说明代码的意图。而且,在不应该跳出 case
的情况下,可以考虑在 case
语句前添加注释,这样当其他人查看代码时,他们就会知道不应该添加 break
。在这种情况下,良好的编程实践是为没有 break
的 case
语句添加注释,以明确表示 break
是故意省略的:
switch ($n) {
case 0:
// Falls through!
case 1:
doSomethingForLargeNumbers();
// Falls through!
case 2:
doSomethingForSmallerNumbers();
break;
…
}
更多信息
Last modified: Thursday, 9 January 2025, 10:33 PM