<?
$percent = 105;
$percent = ($percent > 100) ? 100 :
($percent < 0) ? 0 : $percent;
echo $percent;
?>
Run Code Online (Sandbox Code Playgroud)
为什么这回音0?我正在查看我编写的JavaScript代码,它在逻辑上没有区别.
在PHP中,与JS和许多其他语言相比,三元运算符是左关联的.这意味着你的表达相当于
$percent = (($percent > 100) ? 100 : ($percent < 0)) ? 0 : $percent;
Run Code Online (Sandbox Code Playgroud)
而且,由于($percent > 100) ? 100 : ($percent < 0)在这种情况下的计算结果为100,这是因为如果你这样写
$percent = 100 ? 0 : $percent;
Run Code Online (Sandbox Code Playgroud)
这显然导致零.
建议:不要在没有括号的情况下编写复杂的表达式.将parens放在适当的位置会使代码在JS和PHP中都能工作,并且可以说也更容易阅读.本着同样的精神,我承诺自己永远不会在同一个表达中使用超过一个单一的三元组.你可能想要做同样的事情.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |