2016-05-12 12 views
-2

Ich möchte eine Multiple-Choice-Option. Die Punktzahl wird in Prozent angegeben, aber ich habe Konditionalitäten. Wenn der Score = 100% ist, wird am Ende "C2 Proficiency" angezeigt. aber wenn es gelaufen ist und ich mehr als 30% erreiche, dann wird "A1 Anfänger" angezeigt. Das Skript funktioniert nicht. bitte helfenPHP Wenn Anweisung Skript

hier ist der Code:

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

* Wie * ist es nicht funktioniert? –

Antwort

0

Verwendung Schaltergehäuse

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

All if Aussagen else if mit Ausnahme des ersten sein sollen. Ansonsten sind Sie nur einen nach dem anderen

3

Betrachten wir diese beiden conditionals Ausführung:

if ($persentaje == 100){ 
    $hasil="C2 Proficiency"; 
} 
if ($persentaje > 80) { 
    $hasil="C1 Advanced"; 
} 

Was passiert, wenn $persentaje == 100? Das Ergebnis wird "C1 Advanced" sein. Weil, nun, 100 ist auch größer als 80. (Und größer als 60, und größer als 50, etc.) So alle Ihrer Bedingungen sind true, so jeder überschreibt die vorherige $hasil Wert.

Wenn Sie wollen, dass die conditionals gegenseitig ausschließen, werden Sie wahrscheinlich elseif wollen:

if ($persentaje == 100){ 
    $hasil="C2 Proficiency"; 
} 
elseif ($persentaje > 80) { 
    $hasil="C1 Advanced"; 
} 

Wiederholen Sie für Ihre anderen Bedingungen, bis Sie die letzte else haben.

1

Sie sollten vielleicht switch/case Anweisung statt, ob und, wenn Sie wollen nicht Ihre if statement nur else if verwenden ändern, aber es ist irgendwie anders als switch/case

+0

'Switch' ist nicht weniger als/größer als Vergleiche, es ist für die Gleichheit –

1

Sie könnten Ihren Code wie schreiben:

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

Dies würde definitiv für Sie arbeiten.

1

Versuchen Sie, die if-Anweisungen umzukehren. So wie du es benutzt hast, würde es sich selbst überschreiben.

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

dies in PHP zu arbeiten, ist ganz einfach ... Hier ist ein Beispiel:

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

Erstellen mehrere if-Anweisungen werden dazu führen, dass ein von einer anderen auszuführen ... mit anderen Arbeiten if-Anweisung es wird nur die eine ausführen, die die erforderlichen Parameter übereinstimmt ...

0

Wenn ich eine andere Option könnte darauf hindeuten, in PHP zu verwenden, ist der Schalter Fall Funktionalität:

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

A) Sieht bei mehr Optionen ordentlich aus. B) Es wird eine Option wählen, auf das, was gültig ist

Referenz: Using comparison operators in PHP switch

-1

Sie können Schaltergehäuse verwenden und dieses Problem zu lösen.