alex-lenk
@alex-lenk
Разработчик сайтов

Как в цикле php установить значение по умолчанию если проверка на значение в цикле не было найдено?

В цикле PHP выполняется такое условие
$activeMainSection == $id если истинно то присвой класс active
но нужно ставить класс active первому элементу, если активного раздела не найдено

<?php
foreach ($Array as $id => $section) {
    $activeMainSection = (stripos($arParams['CUR_DIR'], $section['SECTION_PAGE_URL']) !== false);
    ?>
    <div class="<?php if ($activeMainSection == $id) { ?> active<?php } ?>">
        пункт меню <?php echo $id; ?>
    </div>
<?php } ?>


любопытно как решить не используя второго цикла?
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 2
Lastor
@Lastor
В чем сила, брат? В ньютонах.
До завершения цикла никому во всей вселенной неизвестно присваивать ли класс active первому элементу.
А ваш выводит данные во время выполнения.
Если он уже вывел на экран первый элемент, ему до фени что там в следующих.
Принятие решения должно произойти до вывода.
Пройдите в цикле $Array, поймайте что нужно, измените первый элемент, если требуется.
А потом уже выводите на экран в новом цикле.
У меня тоже всегда какие-нибудь траблы возникают, если смешивать логику и вывод данных.
Лучше мухи отдельно, котлеты отдельно.
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Алгоритм прост
Ставим класс первому элементу.
Пробегаемся циклом.
Если есть другой активный, то ставим класс ему и убираем у первого.
На JS легко решается.
На php - хз

Можно применить array_filter, чтобы понять нужно ли ставить класс первому элементу, но по сути, это тот же цикл, только скрыт от глаз
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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