【问题标题】:PHP Switch statementPHP 切换语句
【发布时间】:2011-04-21 04:28:37
【问题描述】:
switch ($sort) {
    case 'abc':
        $order_by = 'subject ASC';
        break;
    case 'fn':
        $order_by = 'u.username ASC';
        break;
    case 'rd':
        $order_by = 'p.posted_on DESC';
        break;
    default:
        $order_by = 'p.posted_on DESC';
        $sort = 'rd';
        break;
}

我想稍微修改一下这段代码,只是不太确定该怎么做。我很确定我可以使用 if else if else if 来做到这一点,但我假设更改此开关非常简单,但我又不确定。

无论如何这就是我想要做的,让我们以'case'abc'为例:

我想要

case 'abc':
    $order_by = 'subject DESC';
    break;

如果

case 'abc':
    $order_by = 'subject ASC';
    break;

这样,当您对记录进行排序时,如果排序已经使用 ASC,它将切换到 DESC,现在我的排序按钮只能以一种方式工作。

TY

【问题讨论】:

    标签: php switch-statement


    【解决方案1】:
    switch ($sort) {
        case 'abc':
            $order_by = 'subject ASC';
            $sort = 'cba'
            break;
        case 'cba':
            $order_by = 'subject DESC';
            $sort = 'abc'
            break;  
        case 'fn':
            $order_by = 'u.username ASC';
            break;
        case 'rd':
            $order_by = 'p.posted_on DESC';
            break;
        default:
            $order_by = 'p.posted_on DESC';
            $sort = 'rd';
            break;
    }
    

    【讨论】:

    • 两个答案似乎都不错,但我要试试这个,这对我来说似乎更简单,谢谢! :)
    【解决方案2】:

    我会设置一个切换变量:

    $abcToggle = false;
    
    //...
    
    case 'abc':
      if($abcToggle) {
        // do something...
        abcToggle = false;
      }
      else {
        // do something else...
        $abcToggle = true;
      }
    break;
    

    或者,也许是更简洁的方式:

    $abcToggle = false;
    
    //...
    
    case 'abc':
      $abcToggle ? $orderBy = 'DESC' : $orderBy = 'ASC';
      $abcToggle ? $abcToggle = false : $abcToggle = true;
    break;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多