【问题标题】:PHP - Nested Ternary Operators [duplicate]PHP - 嵌套三元运算符
【发布时间】:2015-10-25 17:52:50
【问题描述】:

有点麻烦,我正在尝试让 $letterGrade 分配字母,但它似乎只分配 D 和 F。

 ($finalGrade >= 97) ? $letterGrade = "A+" 
        : ($finalGrade >= 93 && $finalGrade <97) ? $letterGrade = "A"
        : ($finalGrade >= 90 && $finalGrade <93) ? $letterGrade = "A-"
        : ($finalGrade >= 87 && $finalGrade <90) ? $letterGrade = "B+"
        : ($finalGrade >= 83 && $finalGrade <87) ? $letterGrade = "B"
        : ($finalGrade >= 80 && $finalGrade< 83) ? $letterGrade = "B-"
        : ($finalGrade >= 77 && $finalGrade <80) ? $letterGrade = "C+"
        : ($finalGrade >= 73 && $finalGrade <77) ? $letterGrade = "C"
        : ($finalGrade >= 70 && $finalGrade <73) ? $letterGrade = "C-"
        : ($finalGrade >= 60 && $finalGrade <70) ? $letterGrade = "D"
        : $letterGrade = "F"
        ;

【问题讨论】:

  • 不要嵌套三元运算符。请改用 switch 语句。

标签: php ternary-operator


【解决方案1】:

不要为此使用三元运算符,而是使用switch 语句。例如:

switch ($finalGrade) {
    case ($finalGrade >= 93 && $finalGrade < 97):
    $letterGrade = "A";
    break;
    //continue $finalGrade checks
}

您也可以使用elseif 语句。

if ($finalGrade >= 93 && $finalGrade < 97) { 
$lettergrade = "A";
}
elseif($finalGrade >= 90 && $finalGrade < 93) {
$letterGrade = "A-";
}
elseif($finalGrade >= 87 && $finalGrade < 90) {
$letterGrade = "B+";
}
//...continue checks....
else {
$letterGrade = "F";
}

【讨论】:

    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 2020-10-06
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多