2016-05-12 87 views
-2

我想做出多项选择。得分将以百分比表示,但我有条件。如果分数= 100%,那么最后将显示“C2熟练程度”。但如果运行,如果我得分超过30%,然后显示“A1初学者”。该脚本不起作用。请帮助PHP如果语句脚本

这里是代码:

<?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"; 
}  
?> 
+1

*如何*是它不工作? –

回答

0

使用开关的情况下

<?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"; 

} 

?> 
1

所有if语句应该是除了第一个else if。 否则你只是执行它们一个接一个

3

考虑这两个条件语句后:

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

1

你也许应该使用switch/case声明,而不是如果,如果你不想改变你的if statement只是用else if但它比开关/箱种不同

+0

'switch'不小于/大于比较,它是为了平等 –

1

你可以写你的代码,如:

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"; 
    } 

这绝对适合你。

1

尝试颠倒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"; 
    } 
0

在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语句将导致他们执行一个由另一个......与其他if语句它工作将只执行所要求的参数相匹配的一个...

0

如果我可以建议另一种选择在PHP中使用的开关罩的功能:

switch(true) { 
     case $percentaje == 100 : 
      $hasil = "C2 Proficiency"; 
      break; 
     case $percentaje > 80: 
      $hasil = "C1 Advanced"; 
      break; 
    } 

A)在更多选择的情况下看起来整洁。 B)将基于对什么是有效的

参考选择一个选项:Using comparison operators in PHP switch

-1

您可以使用开关的情况下,解决这个问题。