这个嵌套的三元表达式如何工作?

时间:2017-07-12 17:45:24

标签: php ternary-operator clamp

我在php中创建了一个clamp()函数,并决定使用嵌套的三元表达式来尝试它。 最后,我决定使用这个(工作)功能:

function clamp($value, $min, $max){
    return 
          $value<$min ? $min
        : ($value>$max ? $max
        : $value);
}

但是,为什么第二个表达式的括号需要?之后我尝试删除它们:..

function clamp($value, $min, $max){
    return 
          $value<$min ? $min
        : $value>$max ? $max
        : $value;
}

...但在此版本中,如果$max小于$value,则会返回$min。我只是不明白它是如何产生的。

1 个答案:

答案 0 :(得分:0)

我听说过php有&#34;左关联&#34;与三元一样,虽然我从未理解它的含义:


$bool ? "a" :
正确的关联性是:($bool ? "b" : "c") ($bool ? "a" : $bool)
左关联性是:? "b" : "c" $bool ? $bool ? "c" : "b" : "a"
所以最后php总是会评估为b或c。

加成:
pygame.Colors
这是一种我认为不会根据关联性改变含义的语法。 我想知道人们是否设法找到了这个变种的漂亮缩进。