php 三元运算符 - 不会与多个 if 短路

php ternary operator - doesn't short circuit with multiple if's

使用三元运算符将整数值更改为分组字符串时,我得到了一个奇怪的结果。

在 javascript 中,此代码将起作用,因为当三元运算符获得第一个 true 时,它​​会短路。

出于某种原因,我的代码大多数时候给出 'B' 的 return 值,但可以打印 'A'。有没有办法在第一次匹配发生时 return ,或者我是否必须将结构更改为 if/else 条件。

function graderator($grade) {
  return (
    $grade < 65 ? 'F' :
    $grade < 70 ? 'D' :
    $grade < 80 ? 'C' :
    $grade < 90 ? 'B' : 'A'
  );
};

var_dump(graderator(58)); // => 'B' should be 'F'
var_dump(graderator(68)); // => 'B' should be 'D'
var_dump(graderator(78)); // => 'B' should be 'C'
var_dump(graderator(88)); // => 'B' should be 'B'
var_dump(graderator(98)); // => 'A' should be 'A'

干杯

你忘了括号

function graderator($grade) {
  return (
    $grade < 65 ? 'F' :
    ($grade < 70 ? 'D' :
    ($grade < 80 ? 'C' :
    ($grade < 90 ? 'B' : 'A')))
  );
};