在
PHP中,我想这样做:
switch (function_foo($bar,$bar2)) { case $fu: *Do Stuff* break; case $fubar: *Do Other Stuff* break; }
这是一个糟糕的主意吗?它会起作用吗?
在交换机中使用一个函数就可以了:将调用该函数,并返回一个值 – 这是一个将用于案例的值.
它和写作完全一样:
$my_var = function_foo($bar,$bar2); switch ($my_var) { // ... }
即使我更喜欢使用变量,所以代码更容易阅读.
在案例中使用变量是您经常看不到的;但它也可以正常工作;-)
The case expression may be any
expression that evaluates to a simple
type,that is,integer or
floating-point numbers and strings.
因此,只要$fu和$fubar包含简单类型的值,您的代码就可以工作.
使用变量作为不常用的案例值(据我所知,从我读过的代码中可以看出),可能是因为其他一些语言不允许这样做(例如,C不允许这样做;以及交换机/案例结构是从C)借来的;但它有效:
$a = 1; $b = 2; switch (1) { case $a: echo 'a'; break; case $b: echo 'b'; break; }
将输出:
a