#php
#php
Вопрос:
я хочу создать таблицу всех классов в виде заголовка таблицы и строк с именем ученика в каждом классе каждого столбца в соответствии с его заголовком, все данные поступают из двух (учеников, классов) mx-кода :
<table>
<thead >
<?php
foreach ($groupList as $group):
?>
<th><?= $group['group_name'] ?></th>
<?php endforeach; ?>
</thead>
<tbody>
<tr>
<?php
foreach ($groupList as $group) {
echo '<td>' ;
foreach ($db->getStudentsByGroup($group['u_id']) as $name){
echo $name['fname'] ;
}
echo '</td>';
}
?>
</tr>
</tbody>
в этом коде они сгруппированы по желанию, но все имена находятся в той же строке, что и ниже
group1 group2
tom, sam, bob, x, y ,...
mark, ...
я пытался изменить местоположение (td, tr), но безуспешно, есть идеи, как это сделать правильно, заранее спасибо
Ответ №1:
Если я не ошибаюсь, это должно сработать!
мой массив:
$array = array(
'group1' => array(
'aaa',
'bbb',
'ccc'
),
'group2' => array(
'ddd',
'eee',
'fff'
)
);
Рабочий код:
echo '
<table border="1">
<thead>';
foreach($array AS $tname => $tvalue){
echo '<th>'.$tname.'</th>';
}
echo '
</thead>
<tbody>';
$keys = array_keys($array);
$first_key = $keys[0];
foreach ($array[$first_key] as $id => $value) {
$body .= "<tr>";
foreach ($keys as $k) {
$body .= "<td>" . $array[$k][$id] . "</td>";
}
$body .= "</tr>";
}
echo $body;
echo '
</tbody>
</table>';
Комментарии:
1. я попробовал это также, тогда все имена находятся в одной строке, каждое в одной ячейке
2. Вам нужно быть более конкретным в отношении того, как хранятся ваши данные и как вы хотите их отображать
3. у меня есть таблица для групп и таблица для студентов, каждый студент может быть только в одной группе, но каждая группа содержит много студентов, я хочу сгенерировать таблицу, в заголовке таблицы отобразите название группы, а в теле таблицы отобразите имя студента в каждом столбце. учащиеся в соответствии с заголовком столбца (в зависимости от группы, в которой они находятся)
4. Если вы хотите, чтобы каждое имя было в новой строке (
<tr>
), тогда оно также<tr>
должно быть внутри цикла5. я также пытался поместить tr в цикл, но тогда каждое имя является строкой, но все имена находятся в одном столбце.