将Function1中返回的值用于Function 2

时间:2017-10-22 10:15:09

标签: php function

你好我这里有两个函数,第一个函数会收到  分数的学生,并将所有分数转换为成绩,我想要  接收和分配每个年级的第二个功能  点(重量)。这是我到目前为止所尝试的内容

   function gradeArray($score) {
     if     ($score >= 70)  return "A";
     elseif ($score >= 50)  return "B";
     elseif ($score >= 40)  return "C";
     else                   return "F";
 }
 function grade($grade) {
 $grade=gradeArray($score);
  if     ($grade == "A")  return "1";
 elseif ($grade == "B")  return "2";
  elseif ($grade =="C")  return "3";
   else                   return "4";
 }

  // scores received from HTML form`

    $scores = array (55, 68, 43, 78);

 //Display result in a tabular form
     echo "<table border='1'><th>Score</th><th>Grade</th>";


     foreach ($scores as $score) {
    echo "<tr><td>$score</td><td>" . gradeArray($score) . "</td>
     <td>" .       grade($grade) . "</td></tr>";

      }

      echo "</table>";

预期输出

      Score  Grade       Points
      55        B            2
      68        B            2
      43        C            3
      78        A            1

运行上面的代码后,我收到以下错误

  

注意:未定义的变量:C:\ xampp \ htdocs \ TEST.php中的等级            第24行

     

注意:未定义的变量:C:\ xampp \ htdocs \ TEST.php中的得分
            在第10行

尽管有不计数的错误,我仍然得到以下结果

    Score   Grade       Points
     55     B            4
     68     B            4
     43     C            4
     78     A            4

我哪里出错?,请帮助,我在php编程非常初级

2 个答案:

答案 0 :(得分:0)

使用得分作为两种方法调用的基础,然后使用:

-function grade($grade) {
+function grade($score) {
 $grade=gradeArray($score);
(...)
 echo "<tr><td>$score</td><td>" . gradeArray($score) . "</td>
-<td>" .       grade($grade) . "</td></tr>";
+<td>" .       grade($score) . "</td></tr>";

或者再次使用返回的成绩(更好,因为它只调用gradeArray()一次)

 function grade($grade) {
-$grade=gradeArray($score);
(...)
-echo "<tr><td>$score</td><td>" . $grade = gradeArray($score) . "</td>
+echo "<tr><td>$score</td><td>" . ($grade = gradeArray($score)) . "</td>
 <td>" .       grade($grade) . "</td></tr>";

如果您在打开$grade后立即获得$weightforeach,并在模板代码中使用变量而不是方法调用,那就更好了。

答案 1 :(得分:0)

您的代码中有两个问题:

首先你有一个未初始化的变量$grade

grade($grade)函数中的第二个,你有一个名为$score的变量,该变量未在函数中初始化,以便更正您对此进行编码的更改:

    function gradeArray($score) {
         if     ($score >= 70)  return "A";
         elseif ($score >= 50)  return "B";
         elseif ($score >= 40)  return "C";
         else                   return "F";
     }
     function grade($grade) {
      if     ($grade == "A")  return "1";
     elseif ($grade == "B")  return "2";
      elseif ($grade =="C")  return "3";
       else                   return "4";
     }

      // scores received from HTML form`

        $scores = array (55, 68, 43, 78);

     //Display result in a tabular form
         echo "<table border='1'><th>Score</th><th>Grade</th><th>points</th>";


         foreach ($scores as $score) {
         $grade = gradeArray($score);
        echo "<tr><td>$score</td><td>" . gradeArray($score) . "</td>
         <td>" .       grade($grade) . "</td></tr>";

          }

          echo "</table>";