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')))
);
};
使用三元运算符将整数值更改为分组字符串时,我得到了一个奇怪的结果。
在 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')))
);
};