PHP Switch语句

时间:2011-04-21 04:28:38

标签: php switch-statement

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 if else if if,但我假设改变这个开关会非常简单,但是我再也不确定了。

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

我想要

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

如果

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

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

TY

2 个答案:

答案 0 :(得分:3)

我会设置一个切换变量:

$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;

答案 1 :(得分:3)

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;
}