是否可以在开关控制流程中调用功能?

时间:2012-11-22 05:02:04

标签: php switch-statement

我能真的这样做吗?

示例:

switch($string){
 case function_name(preferably built-in functions): 
  //codes to run...
  break;
  ....
  ....

}

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。

您可以将内置函数或用户定义函数作为case表达式调用。

举个例子:

function foo() { return 1; }    
function bar() { return 2; }
$var = 3;    
switch($var) {
    case foo():
        echo "FOO\n";break;
    case bar():
        echo "BAR\n";break;
    case max(1,2,3):
        echo "MAX\n"; break;
}

输出

MAX

您可以查看PHP here的语法,并将switch结构定义为:

switch_case_list = "{" [";"] {case_list} "}"
    | ":" [";"] {case_list} "endswitch" ";" ;

case_list = "case" expr [":"|";"] inner_statement_list
    | "default" [":"|";"] inner_statement_list ;

显然,case之后可以跟expr,如果你看到expr的定义,你就会看到函数调用落入其中。