PHP - 有没有办法从 switch case 到 default?

PHP - Is there a way to go from switch case to default?

有没有办法从 switch case 转到执行默认的内容?

switch ($_REQUEST['action']) {

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

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

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

你可以用 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;
}