如何在条件PHP中确定值


How to determine a value in condition PHP?

我有一个用于确定数学和物理值的代码。

->数学成绩:
如果值0-<50,然后是"坏"

如果值50-<75,然后"足够"

如果值75-<85,然后"良好"

如果值85-<100,"伟大"

->物理分数:

如果值0-<50,然后是"坏"

如果值50-<75,然后"良好"

如果值75-<85,然后是"伟大的"

如果值85-<100,"非凡"

如果我输入物理分数=50,我得到的结果是这样的:

"Your physics scores are bad"

源代码:

   <?php
$value=50;
//choice:
$courses='physics'; //or 
$courses='math';
if($courses='math' and $value<50){
    $sentence_value='Your math scores are bad';}
elseif ($courses='physics') {
    $sentence_value='Your physics scores are bad';}
elseif
    ($courses='math' and $value<75){
    $sentence_value='Your math scores are enough';}
elseif ($courses='pyhsics') {
    $sentence_value='Your physics scores are good';}
elseif
    ($courses='math' and $value<85){
    $sentence_value='Your math scores are good';}
elseif ($courses='physics') {
    $sentence_value='Your physics scores are great';}
elseif
    ($courses='math' and $value<=100){
    $sentence_value='Your math scores are great';}
elseif ($courses='physics') {
    $sentence_value='Your physics scores are extraordinary';}
echo"Value : $sentence_value";
?>
<br />

结果,如果我输入50分的数学成绩,我想要这样::

"Your math scores are bad" 

如果我输入70分的数学成绩,我想要这样:

"Your math scores are enough"

如果我输入80分的数学成绩,我想要这样:

"Your math scores are good"

如果我输入100分的数学成绩,我想要这样:

"Your math scores are great"

如果我输入50分的物理成绩,我想要这样:

"Your math scores are bad"

如果我输入74分的物理成绩,我想要这样:

"Your math scores are good"

如果我输入83分的物理成绩,我想要这样:

"Your math scores are great"

如果我输入物理分数98分,我想要这样:

"Your math scores are extraordinary"

我会用一个更容易理解的开关案例来做这件事。顺便说一句,这应该在代码审查中进行,而不是在Stack上。

<?php
$value=70;
//$courses='physics'; //or 
$courses='math';
switch (true) {
    case $value <= 50:
        echo "Your ".$courses." scores are bad";
        break;
    case $value <= 75:
        echo "Your ".$courses." scores are enough";
        break;
    case $value <= 85:
        echo "Your ".$courses." scores are good";
        break;
    case $value <= 95:
        echo "Your ".$courses." scores are great";
        break;
    case $value <= 100:
            echo "Your ".$courses." scores are excellent";
        break;
    default:
            echo "Bug";
    break;
}
?>

您使用'='来比较值,这是错误的!'='正在使用为变量赋值,并使用"=="比较值!你正在为同一个变量赋值和重新赋值,当你为课程分配"数学"时,你失去了以前的值"物理",也许你应该从用户那里输入哪门课程,然后他们给变量赋值!看看完整的样本:

<?php
if(isset($_POST[grade]) && isset($_POST[course])){ 
    $value=$_POST[grade];
    //choice:
    $courses=$_POST[course]; //or 
    if($courses=='math'){
        if($value<50){
            $sentence_value="Your $courses scores are bad";
        }
        elseif($value<75){
            $sentence_value="Your $courses scores are enough";
        }
        elseif($value<85){
            $sentence_value="Your $courses scores are good";
        }
        elseif($value<=100){
            $sentence_value="Your $courses scores are great";
        }
    }
    elseif($courses=='physics'){
        if($value<50){
            $sentence_value="Your $courses scores are bad";
        }
        elseif($value<75){
            $sentence_value="Your $courses scores are good";
        }
        elseif($value<85){
            $sentence_value="Your $courses scores are great";
        }
        elseif($value<=100){
            $sentence_value="Your $courses scores are extraordinary";
        }
    } 
        echo"Value : $sentence_value";
}
?>
<!DOCTYPE html>
<html lang="en">
  <body>
    <form id="form1" name="form1" action="" method="post">
        <input type="text" name="course" placeholder="course" />
        <input type="text" name="grade" placeholder="grade"/>
        <input type="submit" value="submit" />
    </form>
   </body>
</html>

代码中存在许多问题。

<?php
$value=50;
//choice:
$courses='physics'; //or 
$courses='math';

在该块的末尾,$courses将始终具有math的值。

if($courses='math' and $value<50){

在这个if语句中,将值math赋值给$courses,该值的计算结果为true。但是,$value<50的计算结果为false(50!<50),因此您将传递给下一个elseif。

elseif ($courses='physics') {

在这里,将值physics分配给$courses,返回true,因此执行下一行并退出if块。

下面是一个if块,它应该工作得更好:

if ($courses == 'math') {
  if ($value < 50) {
    //
  } elseif ($value < 75) {
    //
  } elseif ($value < 85) {
    //
  } else {
    //
  }
} elseif ($courses == 'physics') {
  if ($value < 50) {
    //
  } elseif ($value < 75) {
    //
  } elseif ($value < 85) {
    //
  } else {
    //
  }
}
function get_grades($subject, $score) {
    $math = [
                50 => "bad",
                75 => "enough",
                85 => "good",
                100 => "great"
            ];
    $physics = [
                50 => "bad",
                75 => "good",
                85 => "great",
                100 => "extraordinary"
    ];
    if ($subject == 'math') {
        $grades = $math;
        $sentence = "Your math scores are "
    } else {
        $grades = $physics;
        $sentence = "Your physics scores are "
    }
    foreach ($grades as $k => $v){
        if ($score <= $k){
            $result = $v;
        }
    }
    return $sentence . $result;
}
echo get_grades("math",50);