Скрыть первое <td>, если для второго в <td>не выбрано какое-либо значение (пусто) - PullRequest
0 голосов
/ 24 января 2020

Мне нужно скрыть первое

<?php echo $user_feature['tab_title_single']; ?>, если второе абсолютно пусто без каких-либо отмеченных ('tab_title_labels') значений.
<?php
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }

    if (!empty($id)) {
        $post_id = $id;
    }
    $user_features = array(
        array(
            'tab_title_single' => 'Apsauga',
            'tab_title_labels' => 'Imobilaizeris,Signalizacija,Palydovinė sekimo sistema,Šarvuotas (apsaugos)'
        ),
        array(
            'tab_title_single' => 'Audio/video įranga',
            'tab_title_labels' => 'CD grotuvas,MP3 grotuvas,Papildoma audio įranga,CD keitiklis,AUX jungtis,Žemų dažnių garsiakalbis,DVD grotuvas,USB jungtis,Laisvų rankų įranga,Apple CarPlay / Android Auto'
        ),
        array(
            'tab_title_single' => 'Eksterjeras',
            'tab_title_labels' => 'Lengvojo lydinio ratlankiai,LED dienos žibintai,LED žibintai,Žibintai „Xenon“,Rūko žibintai,Kablys,Priekinių žibintų plovimo įtaisas,Stogo bagažinės laikikliai,Automatiškai užsilenkiantys veidrodėliai,Žieminių padangų komplektas'
        ),
        array(
            'tab_title_single' => 'Elektronika',
            'tab_title_labels' => 'El. valdomi veidrodėliai,El. valdomas bagažinės dangtis,Automatiškai įsijungiantys žibintai,Borto kompiuteris,El. reguliuojama vairo padėtis,Kritulių jutiklis,Šildomi veidrodėliai,Atstumo jutiklių sistema,Beraktė sistema,Autopilotas,El. šildomas priekinis stiklas,Start-Stop funkcija,Valdymas balsu,Pavarų perjungimas prie vairo,LCD ekranas,Navigacija/GPS'
        )
    );
?>

<?php if (!empty($user_features)) {
    if (!empty($post_id)) {
        $features_car = get_post_meta($post_id, 'additional_features', true);
        $features_car = explode(',', $features_car);
    } else {
        $features_car = array();
    }
    foreach ($user_features as $user_feature) { ?>
        <table style="width: 100%; margin-bottom: 0px">
            <tr>
                <td style="width: 16%; padding-left:5px;">
                    <div class="heading-font" style="color:#555555;font-size: 13px;font-weight: 500;"><?php echo $user_feature['tab_title_single']; ?></div>
                </td>

                <td style="width: 84%; padding-left:5px;">
                    <?php $features = explode(',', $user_feature['tab_title_labels']); ?>
                    <?php if (!empty($features)): ?>
                        <?php foreach ($features as $feature): ?>
                            <?php
                                $checked = '';
                                $hide = 'style="display:none;"';

                                if (in_array($feature, $features_car)) {
                                    $checked = 'checked';
                                    $hide = '';
                                };
                            ?>
                                <label <?php echo $hide; ?>>
                                    <span class="featuresspan"><?php echo esc_attr($feature); ?></span>
                                </label>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </td>
            </tr>
        </table>
    <?php }
}
?>

1 Ответ

0 голосов
/ 10 февраля 2020

Для сравнения двух массивов ($features и $features_car) в php наиболее прямым инструментом для этой задачи является array_intersect(). Хотя я должен сказать вам (и исследователям), что было бы гораздо лучше нормализовать данные вашей таблицы, чтобы вы не хранили значения, разделенные запятыми. Наличие нормализованной / детальной таблицы меток и их отдельных функций, распределенных по нескольким строкам, позволит вашему приложению получать более чистые и более эффективные запросы и позволит вам перенести процессы фильтрации с php на mysql, где он принадлежит.

Код: ( Демо )

$features_car = ['USB jungtis', 'Rūko žibintai'];

foreach ($user_features as $user_feature) {
    $features = explode(',', $user_feature['tab_title_labels']);
    $matched_features = array_intersect($features, $features_car);
    if ($matched_features) {
        echo "<table>";
            echo "<tr>";
                echo "<td>";
                    echo "<div class=\"heading-font\">{$user_feature['tab_title_single']}</div>";
                echo "</td>";
                echo "<td>";
                    foreach ($matched_features as $show_feature) {
                        echo "<label><span class=\"featuresspan\">{$show_feature}</span></label>";
                    }
                echo "</td>";
            echo "</tr>";
        echo "</table>";
    }
}

Вывод:

<table>
    <tr>
        <td>
            <div class="heading-font">Audio/video įranga</div>
        </td>
        <td>
            <label><span class="featuresspan">USB jungtis</span></label>
        </td>
    </tr>
</table>
<table>
    <tr>
        <td>
            <div class="heading-font">Eksterjeras</div>
        </td>
        <td>
            <label><span class="featuresspan">Rūko žibintai</span></label>
        </td>
    </tr>
</table>

пс. Не знаю, поддерживаю ли я укладку элементов <table> как это, но это зависит от вас, как вы будете sh стиль вашей разметки. Вы должны переместить ВСЕ ваши встроенные стили во внешнюю таблицу стилей, чтобы сделать разметку более удобной для чтения и управления. Я удалил esc_attr() только для того, чтобы моя демоверсия работала без ошибок - вы можете смело применять ее ко всем интересующим вас переменным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...