Привет! Не получается наладить код с array_multisort. При нажатии показать оценки, хочу чтобы появилась другая таблица, где имена и оценки отфильтрованы с помощью команды array_multisort. Вот код: PHP: <body> <form method="post" action="exam.php"> <input type="hidden" name="posted" value="true" /> <table border="1"> <?php $student = array("Альберт Инштейн", "Иван Грозный", "Исаак Ньютон", "Наполеон"); while (list(, $name) = each($student)) { echo "<tr><td>Какую оценк по математике получил <b>$name</b></td>"; echo "<td><select name = 'math[]'> <option>A</option> <option>B</option> <option>C</option> <option>D</option> <option>F</option> <option>G</option> </select>"; echo "<input type='hidden' name='student[]' value ='$name'/></td></tr>";; } ?> <tr><td> </td><td> <input type="submit" value="Показать оценки"/> </td></tr></table></form> <?php if (isset($_POST['posted'])) { ?> <table border="1"> <tr><td colspan="2">Оценки по математике расположены в следующем порядке</td></tr> <?php while (list($index,$value)=each($_POST['math'])) { $student[]=$_POST['student'][$index]; $math[]=$_POST['math'][$index]; } array_multisort($math,$student); while (list($index,$value)=each($student)) { echo "<tr><td><b>$student[$index]</b></td><td>$math[$index]</td></tr>"; } } ?> </table> </body> И вот что получается: Код (Text): Warning: array_multisort(): Array sizes are inconsistent in C:\work\site.ru\www\phpnew\c4\exam.php on line 44 Notice: Undefined offset: 4 in C:\work\site.ru\www\phpnew\c4\exam.php on line 47 Notice: Undefined offset: 5 in C:\work\site.ru\www\phpnew\c4\exam.php on line 47 Notice: Undefined offset: 6 in C:\work\site.ru\www\phpnew\c4\exam.php on line 47 Notice: Undefined offset: 7 in C:\work\site.ru\www\phpnew\c4\exam.php on line 47 Где моя ошибка?
У вас массив уже объявлен в начале скрипта в линии 6. Соответственно в линии 33 к нему ещё прибавляется такой массив. Вот и несоответствие. Либо обнуляйте массив $student после проверки $_POST['posted'], либо называйте по-другому. Для информации: foreach ($student as $name) работает быстрее чем while (list(, $name) = each($student)), да и выглядит куда более читабельно.