@alexmixaylov

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

делаю фильтр материалов в категории

таблица

есть таблица с результатами
данные из некоторых ячеек присваиваются
дата атрибутам строки и скриптом из атрибутов формируются селекты (фильтр)

$filter1 = null;
$filter2 = null;
$filter3 = null;
 
if ($this->checkPosition('filter1') AND strlen($this->renderPosition('filter2')) > 2) {
    $filter1 = trim($this->renderPosition('filter1'));
}
if ($this->checkPosition('filter2') AND strlen($this->renderPosition('filter2')) > 2) {
    $filter2 = trim($this->renderPosition('filter2'));
}
if ($this->checkPosition('filter3') AND strlen($this->renderPosition('filter3')) > 2) {
    $filter3 = trim($this->renderPosition('filter3'));
}
 
$vid = $filter1 . $filter2 . $filter3;
 
    <tr     
        <?php if ($vid): ?>
        data-vid="<?php echo $vid; ?>"
        <?php endif; ?>


в каждой из позиций может быть несколько элементов
разделитель у них "|"
вывод выглядит так например
переменная $filter1 содержит "Семьи с детьми | По стране"
переменная $filter2 содержит "Активный"
если данные есть в двух позициях, то вывод получается такой
"Семьи с детьми | По странеАктивный"

переменная с атрибутами $vid = $filter1 . $filter2 . $filter3; состоит из нескольких переменных
получается что между $filter1 и $filter2 отсутствует разделитель
я могу *сунуть туда раздел*итель так $vid = $filter1 . '|' . $filter2 . $filter3;
но это тоже нормально работать не будет

ВОПРОС В ТОМ как туда правильно всунуть разделитель между переменными
  • Вопрос задан
  • 463 просмотра
Решения вопроса 1
@ishpanec
Самый простой вариант:

$filter = array();
if ($this->checkPosition('filter1') AND strlen($this->renderPosition('filter2')) > 2) {
    $filter[] = trim($this->renderPosition('filter1'));
}
if ($this->checkPosition('filter2') AND strlen($this->renderPosition('filter2')) > 2) {
    $filter[] = trim($this->renderPosition('filter2'));
}
if ($this->checkPosition('filter3') AND strlen($this->renderPosition('filter3')) > 2) {
    $filter[] = trim($this->renderPosition('filter3'));
}
$vid = implode('|', $filter);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@yuriyant
web программист
Если я правильно понял вопрос, то так:
$vid = implode(" | ", [$filter1,$filter2,$filter3]);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы