php三元运算符-不';t与多个if'短路;s
通过使用三元运算器将整数的值更改为分组字符串,我得到了一个奇怪的结果 在javascript中,这段代码的工作原理是三元运算符在第一个为真时短路 由于某种原因,我的代码在大多数情况下返回值为php三元运算符-不';t与多个if'短路;s,php,ternary-operator,Php,Ternary Operator,通过使用三元运算器将整数的值更改为分组字符串,我得到了一个奇怪的结果 在javascript中,这段代码的工作原理是三元运算符在第一个为真时短路 由于某种原因,我的代码在大多数情况下返回值为'B',但可以打印'a'。是否有任何方法可以在第一次匹配发生时返回,或者是否必须将结构if更改为if/else条件 function graderator($grade) { return ( $grade < 65 ? 'F' : $grade < 70 ? 'D' :
'B'
,但可以打印'a'
。是否有任何方法可以在第一次匹配发生时返回,或者是否必须将结构if更改为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'
功能分级器($grade){
返回(
$grade<65?'F':
$grade<70?'D':
$grade<80?'C':
$grade<90?'B':'A'
);
};
变量转储(平地机(58));//=>'B'应该是F'
变量转储(平地机(68));//=>'B'应该是'D'
变量转储(平地机(78));//=>'B'应该是C'
变量转储(平地机(88));//=>'B'应该是B'
变量转储(平地机(98));//=>'“A”应该是“A”
干杯你忘了带括号了
function graderator($grade) {
return (
$grade < 65 ? 'F' :
($grade < 70 ? 'D' :
($grade < 80 ? 'C' :
($grade < 90 ? 'B' : 'A')))
);
};
功能分级器($grade){
返回(
$grade<65?'F':
($等级<70?'D':
($等级<80?'C':
($等级<90?'B':'A'))
);
};
您应该知道,三元表达式是从左到右求值的
RTFM:更准确地说,这是PHP版本三元运算符的一个众所周知的“问题”。其他语言。。。没有这个问题。