#php
#php
Вопрос:
У меня есть этот массив:
Array
(
[Zahid] => Array
(
[physics] => 35
[maths] => 30
[chemistry] => 39
)
[Amir] => Array
(
[physics] => 30
[maths] => 32
[chemistry] => 29
)
[Kundan] => Array
(
[physics] => 31
[maths] => 22
[chemistry] => 39
)
[Narayan] => Array
(
[physics] => 31
[maths] => 22
[chemistry] => 39
)
)
Я хочу показать данный массив в этом формате таблицы HTML. Я пытался использовать цикл foreach, но он не показывает правильный формат. Как я могу это сделать?
<table border="1">
<tr>
<th>Zahid</th>
<th>Amir</th>
<th>Kundan</th>
<th>Narayan</th>
</tr>
<tr>
<td>physics : 35</td>
<td>physics : 30</td>
<td>physics : 31</td>
<td>physics : 31</td>
</tr>
<tr>
<td>maths : 30</td>
<td>maths : 32</td>
<td>maths : 22</td>
<td>maths : 22</td>
</tr>
<tr>
<td>chemistry : 39</td>
<td>chemistry : 29</td>
<td>chemistry : 39</td>
<td>chemistry : 39</td>
</tr>
</table>
Комментарии:
1. «Я попытался выполнить цикл foreach, но он не показывает формат coeect». Покажите код, который вы пробовали, и результирующий результат.
2. Было бы неплохо, если бы вы также включили var_export массива.
3. Вероятно, вам нужно изменить порядок ваших данных в массиве в соответствии с предметами, а не именами, например, Array ([Physics] => Array ([Zahid] => 35 [Amir] => 30) ) и т. Д. Таким образом, будет легче перебирать строки.
4. @Andreas — Я написал этот конвертер именно для такой вещи artisticphoenix.com/2018/11/11/output-converter Он может конвертировать
print_r
илиvar_dump
вvar_export
— он работает довольно хорошо, не обращайте внимания на остальную часть моего сайта, так как у меня, кажется, никогда не бывает времени поработать над ним. Вы можете найти исходный код для него на GitHub
Ответ №1:
Вы не сможете использовать вложенный цикл foreach в основном массиве, потому что в итоге у вас будут ученики в виде строк, а предметы — в виде столбцов, что противоположно тому, что вы хотите. Я предполагаю, что это то, что вы получаете, когда говорите, что он не отображает правильный формат. Вы можете получить список предметов от одного студента:
$subjects = array_keys(reset($students));
Затем повторите это, чтобы получить ваши строки, и внутри каждой строки повторите список учащихся, чтобы получить их оценку по предмету, который отображается в этой строке.
// each subject is a row
foreach ($subjects as $subject) {
// each student is a column
foreach ($students as $student => $grades) {
echo "$subject : $grades[subject]";
}
}
Это общая идея, я уверен, что вы можете разобраться с разметкой таблицы, поэтому я оставил это для простоты.
Ответ №2:
Я не спрашиваю, почему вы игнорируете ссылку на студентов… итак, самый простой подход к решению, попробуйте это:
// student
$students = array_keys($array);
//physics
$physics = array_column($array, 'physics');
//maths
$maths = array_column($array, 'maths');
и, наконец, делайте все, что хотите, с данными, извлеченными из $array.