@anton99zel
29а класс средней школы №7

Как разбить на три части результат while?

<?
$rsParentSection = CIBlockSection::GetByID(94);
if ($arParentSection = $rsParentSection->GetNext())
{
//всякая ерунда от битрикса
while ($arSect = $rsSect->GetNext())
{?><div><?=$arSect['NAME']?></div><?}
}?>

Выведет список в строку.
Как разбить список на три равномерные колонки/строки/части?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Как-то так:
$col = 1;
$html = ["", "", ""];
while ($arSect = $rsSect->GetNext()) {
  $html[$col] .= '<div>' . $arSect['NAME'] . '</div>';
  $col = $col == 2 ? 0 : $col + 1;
}
echo( $html[0] . $html[1] . $html[2] );

Проблема в том, что, перебирая данные последовательно, вы не имеете представления об их длине. Поэтому вы заранее не можете посчитать, какой длины будет колонка. Выход: формировать все три колонки на сервере.

Если вам нужно последовательно выводить данные в каждой колонке, то принцип тот же. Только нужно все данные загнать в большой массив, потом по его длине понять длину колонки, и далее выводить массив последовательно, в нужных местах вставляя разбиение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EathbornBot
@EathbornBot
...
А через CSS не проще?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы