在 PHP 中我想这样做:
switch (function_foo($bar,$bar2)) {
case $fu:
*Do Stuff*
break;
case $fubar:
*Do Other Stuff*
break;
}
这是个糟糕的主意吗?会成功吗?
最佳答案
在 switch
中使用一个函数是可以的:该函数将被调用,并返回一个值——该值将用于这种情况。
这和写完全一样:
$my_var = function_foo($bar,$bar2);
switch ($my_var) {
// ...
}
即使我更喜欢使用变量,这样代码也更易于阅读。
在 case
中使用变量是您不常看到的;但它也很好用 ;-)
引用 the manual page of switch
:
The case expression may be any expression that evaluates to a simple type, that is, integer or floating-point numbers and strings.
因此,只要 $fu
和 $fubar
包含简单类型值,您的代码就可以工作。
使用变量作为 case
值并不常见(据我阅读的代码所知),可能是因为其他一些语言不允许这样(例如,C 不允许这样做;switch
/case
结构是从 C 中借用的);但它有效:
$a = 1;
$b = 2;
switch (1) {
case $a: echo 'a'; break;
case $b: echo 'b'; break;
}
将输出:
a
关于php - 对案例使用变量,对开关使用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382783/