Задать вопрос
@velax

Как вывести данные в html таблицу?

Есть данные:

[
    [
        'type'  => 'type1',
        'pages' => [ 
            ['name' => 'page1', 'attribute' => ['atr1', 'atr2', 'atr3', 'atr4']],
            ['name' => 'page2', 'attribute' => ['atr1', 'atr2', 'atr3']],
            ['name' => 'page3', 'attribute' => ['atr1', 'atr2']],
        ]  
    ]
]

Нужно вывести их на страницу в форме HTML таблицы:

+———————+———————+———————+
| page1 | page2 | page3 |
+———————+———————+———————+
| atr1  | atr1  | atr1  |
+———————+———————+———————+
| atr2  | atr2  | atr2  |
+———————+———————+———————+
| atr3  | atr3  |       |
+———————+———————+———————+
| atr4  |       |       |
+———————+———————+———————+


Основная проблема с которой я столкнулся при переборе циклом foreach это то, что html таблица формируется строками, а данные считываются колоннами.

Как это сделать именно в таком формате (с пустыми ячейками и сохранением структуры)?

  • Вопрос задан
  • 329 просмотров
Подписаться 2 Простой 3 комментария
Ответ пользователя Дмитрий К ответам на вопрос (3)
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Писал с телефона, скорее всего косяки есть
Но для примера пойдёт
$count = $json['pages'];

$dept = [];

for($d = 0; $d < $count; $d++) {
    $dept[] = count($json['pages][$d]['attribute'];
}

$max = max($dept);

echo '<table><tr>';

for ($i = 0; $i < $count; $i++) {
    echo '<th>' . $json['pages][$i]['name'] . '</th>';
} // заголовок
echo '</tr>';

while(++$x < $max) {
    echo '<tr>';
    for($k = 0; $k < $count; $k++) {
        echo '<td>' .  ($json['pages'][$k]['attribute][$x] ?? '') . '</td>';
    }
    echo '</tr>';
}

echo '</table>';
Ответ написан
Комментировать