【问题标题】:PHP - Is there a way to go from switch case to default?PHP - 有没有办法从 switch case 到 default?
【发布时间】:2021-03-30 08:13:57
【问题描述】:

有没有办法从 switch case 执行默认设置?

switch ($_REQUEST['action']) {

    case 'edit':
        if (isset($_REQUEST['id']) {
            doSomething();
        else {
            goToDefault();
        }
        break;
        
    case 'list':
        ...
        break;
        
    default:
        doDefaultStuff();
        break;
}

在示例中,我希望在第一种情况下执行默认的 switch。

这可能吗,还是我应该使用不同的方法?

【问题讨论】:

  • 是的,恕我直言,您应该使用不同的方法。仅仅因为您的edit 操作可能需要的 id 可能未设置,因此不会突然将其变为任何 不同 操作,如默认操作。如果您想在该默认部分进行一些通用错误处理 - 那么我宁愿让我的“真实”案例设置一个标志以指示是否存在任何错误,然后检查该标志 after i> switch 语句。
  • 您可以将“编辑”案例放在“默认”上方,并删除“中断”(当然,如果您只有一个这样的案例);或者做一个'如果'......

标签: php switch-statement case default


【解决方案1】:

您可以使用 goto 来做到这一点,但我不建议这样做。

$action = 'edit';
$id = null;
switch ($action) {

    case 'edit':
        if ($id) {
            doSomething();
        } else {
            goto default_action;
        }
        break;
        
    case 'list':
        break;
        
    default: 
        default_action: echo "doing default stuff";
        break;
}

演示:https://3v4l.org/X71e8

您可以改用switch(true)

switch (true) {
    case $_REQUEST['action'] === 'edit' && isset($_REQUEST['id']):
        doSomething();
        break;
        
    case $_REQUEST['action'] === 'list':
        // ...
        break;
        
    default:
        doDefaultStuff();
        break;
}

【讨论】:

  • 每次使用 goto 都会有一只小猫死去。
猜你喜欢
  • 2013-08-29
  • 2015-08-13
  • 1970-01-01
  • 2011-12-22
  • 2014-11-09
  • 1970-01-01
  • 2018-03-23
  • 2018-02-26
  • 2021-12-08
相关资源
最近更新 更多