How to use ternary operator instead of if-else in PHP

前端 未结 2 1631
再見小時候
再見小時候 2020-12-10 07:13

I’m trying to shorten my code using the ternary operator.

This is my original code:

if ($type = \"recent\") {
    $OrderType = \"sid DESC\";
} elseif         


        
相关标签:
2条回答
  • 2020-12-10 07:52

    I'd suggest using a case statement instead. it makes it a little more readable but more maintainable for when you want to add extra options

    switch ($type)
    {
    case "recent":
      $OrderType =  "sid DESC"; 
      break;
    case "pop":
      $OrderType =  "counter DESC"; 
      break;
    default:
       $OrderType =  "RAND()"; 
    } 
    
    0 讨论(0)
  • 2020-12-10 07:56

    This is called the ternary operator ;-)

    You could use two of those :

    $OrderType = ($type == 'recent' ? 'sid DESC' : ($type == 'pop' ? 'counter DESC' : 'RAND()'))
    

    This can be read as :

    • if $type is 'recent'
    • then use 'sid DESC'
    • else
      • if $type is 'pop'
      • then use 'counter DESC'
      • else use 'RAND()'


    A couple of notes :

    • You must use == or === ; and not =
      • The first two ones are comparison operators
      • The last one is the assignment operator
    • It's best to use (), to make things easier to read
      • And you shouldn't use too many ternary operators like that : it makes code a bit hard to understand, i think


    And, as a reference about the ternary operator, quoting the Operators section of the PHP manual :

    The third group is the ternary operator: ?:.
    It should be used to select between two expressions depending on a third one, rather than to select two sentences or paths of execution.
    Surrounding ternary expressions with parentheses is a very good idea.

    0 讨论(0)
提交回复
热议问题