2016-05-12 122 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

您可以使用開關的情況下,解決這個問題。