Можно так.
Определять максимальное кол-во столбцов в табличке на основе кол-ва заполненных свойств. Например, если свойство "Размер" вообще ни у кого не заполнено, то и зачем оно в табличке? Если хоть у кого-то есть - то +1 столбец. И так по всем свойствам.
Дальше в цикле вывода по каждой строчке сравнивать кол-во вновь выводимых столбцов с максимальным, добирать разницу пустыми ячейками.
Или colspan'ами, как угодно.
Определять максимальное кол-во столбцов в табличке на основе кол-ва заполненных свойств. Например, если свойство "Размер" вообще ни у кого не заполнено, то и зачем оно в табличке? Если хоть у кого-то есть - то +1 столбец. И так по всем свойствам.
Дальше в цикле вывода по каждой строчке сравнивать кол-во вновь выводимых столбцов с максимальным, добирать разницу пустыми ячейками.
Или colspan'ами, как угодно.