Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php三元运算符-不';t与多个if'短路;s_Php_Ternary Operator - Fatal编程技术网

php三元运算符-不';t与多个if'短路;s

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' :

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

在javascript中,这段代码的工作原理是三元运算符在第一个为真时短路

由于某种原因,我的代码在大多数情况下返回值为
'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版本三元运算符的一个众所周知的“问题”。其他语言。。。没有这个问题。