Сортировка и отображение значения многомерного массива

#arrays #sorting

#массивы #сортировка

Вопрос:

Index.php

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Activity 5B</title>
    <style>
        .box {
            width: 600px;
            padding: 10px;
            margin: 0;
            border: 1px outset black;
            background-color: lightblue;
            text-align: center;
        }
        table {
            table-layout: fixed;
            width: 600px;
            'border: 1px solid red;
            text-align: left;
            
        }
        table,
        th,
        td {
            'border: 1px solid black;
        }
         table th, table td{
        padding: 5px;
    }
    </style>
</head>
<body>
    <div class="box">
        <form action="process.php" method="POST">
            <br>
            <h4>EXAMINATION RESULT</h4>
            <br>
            <br>
            <table>
                <tr>
                  <th style='width:10%'>No.</th>
                  <th style='width:40%'>NAME</th>
                  <th  style='text-align: center'>EXAM1</th>
                  <th  style='text-align: center'>EXAM2</th>
                  <th  style='text-align: center'>EXAM3</th>
                </tr>
               
                <tr>
                    <td>1</td>
                    <td><input type="text" size="27" name="name[]" required></td>
                    <td><input type="text" size="5" name="ex1[]" required></td>
                    <td><input type="text"  size="5" name="ex2[]" required></td>
                    <td><input type="text"  size="5" name="ex3[]" required></td>
                </tr>
                <tr>
                    <td>2</td>
                    <td><input type="text" size="27" name="name[]" required></td>
                    <td><input type="text" size="5" name="ex1[]" required></td>
                    <td><input type="text"  size="5" name="ex2[]" required></td>
                    <td><input type="text"  size="5" name="ex3[]" required></td>
                </tr>
                <tr>
                    <td>3</td>
                    <td><input type="text" size="27" name="name[]" required></td>
                    <td><input type="text" size="5" name="ex1[]" required></td>
                    <td><input type="text"  size="5" name="ex2[]" required></td>
                    <td><input type="text"  size="5" name="ex3[]" required></td>
                </tr>
                <tr>
                    <td colspan="2"style='text-align: center' ><input type="submit" name="submit" value="SUBMIT REQUEST"></td>
                    <td colspan="3" style='text-align: center'> <button type="reset" value="Reset">CLEAR</button></td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>  

Process.php

  

<!DOCTYPE html>
 <html>

 <head>
     <style>
         .box {
             width: 350px;
             padding: 10px;
             margin: 0;
             border: 1px outset black;
             background-color: lightblue;
             text-align: center;
         }
        table {
             table-layout: fixed;
             width: 350px;
             border: 1px solid red;
             text-align: left;
         }
        table,
         th,
         td {
             border: 1px solid black;
         }
     </style>
 </head>

 <body>
     <div class="box">
         <?php        
    if(isset($_POST['submit'])){    
    $name = $_POST['name'];
    $ex1 = $_POST['ex1'];
    $ex2 = $_POST['ex2'];
    $ex3 = $_POST['ex3'];
        
    $exam = array();
        
    for($i = 0; $i < count($name); $i  ) {
    $exam[] = array(
        'name' => $name[$i], 
        'exam1' => $ex1[$i],
        'exam2' => $ex2[$i],
        'exam3' => $ex3[$i],
    );
}

echo "<pre>";
print_r($exam);
echo "<pre>";

$keys = array_keys($exam);
for($i = 0; $i < count($exam); $i  ) {
      echo "<p><b>Exam Result $keys[$i]</b></p>";
      echo "<ul>";
     foreach($exam[$keys[$i]] as $key => $value) {
        echo $key . " : " . $value . "<br>";
      }
      echo "</ul>";
    }
 }

?>
 </div>
 </body>
 </html>

    enter code here  

Оригинальное упражнение от проф. Форма и вывод

У меня нет проблем с назначением текстового ввода массиву, у меня проблема с отображением правильного вывода

Это мой целевой результат

Результат экзамена 1

  • Rolly 99
  • Джеймс 80
  • Дейв 79

Результат экзамена 2

  • Дейв 95
  • Rolly 86
  • Джеймс 80

Результат экзамена 3

  • Джеймс 88
  • Дейв 75
  • Rolly 60

Любая помощь будет с благодарностью оценена Благодаря stackoverflow

Комментарии:

1. Добро пожаловать в Stack Overflow. В чем ваш вопрос?

2. Спасибо, ребята.. Я уже понял это…

Ответ №1:

  echo "<p><b>TOTAL STUDENTS: ". count($exam)."</b></p>";
     for($i = 0; $i < count($exam); $i  ) {
        echo "<p><b>Exam Result ".($i  1)."</b></p>";
        $keys = array_column($exam, "exam$i");
        array_multisort($keys, SORT_DESC, $exam);
        foreach ($exam as $row) {
            echo "<li>". $row['name']. " ". $row["exam$i"]."</li>";
        }
     }
 }