Предполагая, что Категория - это таблица имен категорий - вы можете выбрать ВСЕ категории сразу и использовать в запросе ORDER BY в запросе:
$query = 'SELECT name FROM db.categories ORDER BY name ASC;';
Вы также можете использовать sort в наборе результатов:
$query = 'SELECT name FROM db.categories;';
/* execute query here... */
sort($resultSet);
Давайте предположим, что вы сделали это, стилизация будет проще с использованием сетки начальной загрузки (обратите внимание на ложный набор результатов в скриптах):
<?php
const NUM_COLS = 4;
$numResults = count($dummyResult);
$numPerCol = round($numResults / NUM_COLS);
?>
<div class="container">
<div class="row">
<?php
for($i = 0, $col = 0; $col < NUM_COLS; $col++){
echo '<div class="col">';
for($colLimit = min($numResults, $i + $numPerCol); $i < $colLimit; $i++){
echo '<div class="row">'.$dummyResult[$i]['category'].'</div>';
}
echo '</div>';
}
?>
</div>
</div>
Вот скрипка
Легче понять, хотя, возможно, более медленный пример:
<?php
const NUM_COLS = 4;
$numResults = count($dummyResult);
$numPerCol = round($numResults / NUM_COLS);
?>
<div class="container">
<div class="row">
<?php
for($i = 0; $i < NUM_COLS; $i++){
echo '<div class="col">';
foreach( array_splice($dummyResult, 0, $numPerCol) as $row ){
echo '<div class="col">'.$row['category'].'</div>';
}
echo '</div>';
}
?>
</div>
</div>
Вот скрипка
Примечание. Контейнер будет иметь ширину 100% от его родителя, если не указано иное.
Ширина столбцов будет равна по умолчанию. См. Сетка начальной загрузки .