Php 在开关控制流的情况下,是否可以调用函数?

Php 在开关控制流的情况下,是否可以调用函数?,php,switch-statement,Php,Switch Statement,我真的可以这样做吗 例如: switch($string){ case function_name(preferably built-in functions): //codes to run... break; .... .... } 是的,这是可能的 您可以调用内置函数或用户定义函数作为case表达式 例如: function foo() { return 1; } function bar() { return 2; } $var = 3; swit

我真的可以这样做吗

例如:

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

}
是的,这是可能的

您可以调用内置函数或用户定义函数作为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的语法,开关构造的定义如下:

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

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

很明显,
case
后面可以跟一个
expr
,如果你看到expr的定义,你会看到函数调用就属于这个定义。

我不确定,这是可能的,但是为什么你需要它,你可以提前得到值,然后把它放在case station中,为什么不试试呢?(剧透:你可以,我刚刚试过。:)开关($var){大小写是数字(这个)://}可能吗。。就像在jQuery中一样,“this”变量工作得很好。但是我不懂PHP。。它会是什么样子。。