我想做多项选择。分数是百分比,但我有条件句。如果分数=100%,那么最终将显示"C2熟练程度"。但如果跑步,如果我的得分超过30%,则显示"A1初学者"。脚本不起作用。请帮助
这是代码:
<?php
if ($persentaje == 100){
$hasil="C2 Proficiency";
}
if ($persentaje > 80) {
$hasil="C1 Advanced";
}
if ($persentaje > 60) {
$hasil="B2 Upper Intermediate";
}
if ($persentaje > 50) {
$hasil="B1 Intermediate";
}
if ($persentaje > 40) {
$hasil="A2 Pre Intermediate";
}
if ($persentaje > 30) {
$hasil="A2 Elementary";
}
else {
$hasil="A1 Beginner";
}
?>
考虑这两个条件:
if ($persentaje == 100){
$hasil="C2 Proficiency";
}
if ($persentaje > 80) {
$hasil="C1 Advanced";
}
$persentaje == 100
时会发生什么?结果将是"C1 Advanced"
。因为,100是,也大于80。(大于60,大于50,等等)所以所有条件都是true
,因此每个条件都覆盖前一个条件的$hasil
值。
如果你想让条件词互斥,你可能想要elseif
:
if ($persentaje == 100){
$hasil="C2 Proficiency";
}
elseif ($persentaje > 80) {
$hasil="C1 Advanced";
}
对其他条件重复此步骤,直到获得最终else
。
除第一个语句外,所有if
语句都应为else if
。否则,您只是一个接一个地执行它们
您可能应该使用switch/case
语句,而不是if。如果您不想更改if statement
,只需使用else if
,但它与switch/case 有点不同
您可以编写如下代码:
if ($persentaje == 100){
$hasil="C2 Proficiency";
} else if ($persentaje > 80) {
$hasil="C1 Advanced";
}else if ($persentaje > 60) {
$hasil="B2 Upper Intermediate";
}else if ($persentaje > 50) {
$hasil="B1 Intermediate";
}else if ($persentaje > 40) {
$hasil="A2 Pre Intermediate";
}else if ($persentaje > 30) {
$hasil="A2 Elementary";
} else {
$hasil="A1 Beginner";
}
这肯定对你有用。
尝试反转if语句。按照你使用它的方式,它会覆盖自己。
<?php
if ($persentaje > 30){
$hasil="A2 Elementary";
}if ($persentaje > 40) {
$hasil="A2 Pre Intermediate";
}if ($persentaje > 50) {
$hasil="B1 Intermediate";
} if ($persentaje > 60) {
$hasil="B2 Upper Intermediate";
} if ($persentaje > 80) {
$hasil="C1 Advanced";
} if ($persentaje == 100) {
$hasil="C2 Proficiency";
} if($persentaje < 30) {
$hasil="A1 Beginner";
}
使用切换案例
<?php
switch($percentaje) {
case $percentaje == 100 :
$hasil = "C2 Proficiency";
break;
case $percentaje > 80:
$hasil = "C1 Advanced";
break;
case $persentaje > 60:
$hasil = "C1 Advanced";
break;
case $persentaje > 50:
$hasil = "C1 Advanced";
break;
case $persentaje > 40:
$hasil = "C1 Advanced";
break;
case $persentaje > 30:
$hasil = "C1 Advanced";
break;
default:
$hasil="A1 Beginner";
}
?>
在php中进行此操作非常简单。。。这里有一个例子:
$money = 100;
if($money) {
echo "You have - ".$money;
}else if($money < 100) {
echo "You have less then needed";
}else if ($money > 10) {
echo "Your funds are critical";
}else {
echo "You don't have money!";
}
创建多个if语句将导致它们一个接一个地执行。。。使用else-if语句时,它将只执行与所需参数匹配的语句。。。
如果我可以建议在PHP中使用的另一个选项是切换用例功能:
switch(true) {
case $percentaje == 100 :
$hasil = "C2 Proficiency";
break;
case $percentaje > 80:
$hasil = "C1 Advanced";
break;
}
A) 如果有更多的选择,看起来很整洁。B) 它将根据有效选择一个选项
参考:在PHP开关中使用比较运算符
您可以使用switch case来解决这个问题。