Скрыть DIV, если функция пуста

скажем, у меня есть следующий код, как я могу скрыть DIV, если функция пуста?

Точно так же, как я могу показать другой DIV, если функция пуста?

<div class='box12'>
<h1>text<h1/>
<p><?php echo name5(); ?><p/>
</div>

Вот моя функция для справки (она возвращает метаполе термина таксономии в wordpress):

function regular_tran() {
                $terms = get_the_terms($post->ID, 'regularb');
                $result = "";
                if (is_array($terms) || is_object($terms)){
                foreach ($terms as $term) {
                    $term_id = $term->term_id;
                    $result .= get_term_meta( $term_id, 'tran_65583', true );
                }
            }
                return $result;
            }

что такое пустая функция?

Reda Meskali 29.07.2018 21:56

Это похоже на проблему X / Y. Вы можете опубликовать свой вопрос полностью?

Goodbye StackExchange 29.07.2018 21:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
420
4

Ответы 4

Проверьте, возвращает ли функция что-то, а затем покажите div, если это так:

<?php
$name = name5();

if ($name) {
?>
    <div class='box12'>
        <h1>text</h1>
        <p><?php echo htmlentities($name); ?></p>
    </div>
<?php
}
?>

Я также очистил ваши конечные теги h1 и p. Вызов htmlentities включен, чтобы избежать проблем, когда кто-то может вставить теги HTML в свое имя и выполнить через них javascript и т. д.

Чтобы показать другой div сообщения, вы можете использовать else (или использовать !$name, если вы хотите показать только div, если результат оценивается как пустой):

<?php
$name = name5();

if ($name) {
?>
    ...
<?php
} else {
?>
    <div>shown if empty</div>
<?php
}
?>

Спасибо. Нужно ли мне для этого превращать функцию в переменную $ или я могу обойтись без этого?

harvey 29.07.2018 22:01

Если функция дешевая, т. Е. Не требует внешнего ресурса, такого как база данных и т. д., Вы можете вместо этого вызывать функцию несколько раз. В этом случае замените $name на вызов функции name5().

MatsLindh 29.07.2018 22:02

Я не совсем понимаю, что вы имеете в виду под внешним ресурсом. Я добавил свою функцию к исходному вопросу.

harvey 29.07.2018 22:10

Это означает, что он попадает в базу данных, веб-службу и т. д. Определение вашей функции, похоже, указывает, что это плагин / тема wordpress, а функция _meta, по крайней мере, попадает в базу данных каждый раз, когда вы ее используете. Итак, нет, вы не хотите вызывать функцию более одного раза.

MatsLindh 29.07.2018 23:23

Хорошо понял. Спасибо! Вы рекомендуете для начала просто использовать переменную вместо функции? Если да, то как мне его закодировать?

harvey 29.07.2018 23:25

Я попробовал ваш код, но он не сразу сработал. Чтобы заставить его работать, мне пришлось добавить следующее: if ($ name == "" && $ name == NULL) {....

harvey 30.07.2018 00:32

Серверный код должен что-то выдавать для клиентского javascript-кода. Измените свой код:

<p><?php echo name5(); ?><p/>

что-то вроде:

<p>
<?php if (!name5()){ ?>
<script>
$(".box12").hide(); // asuming you are using jQuery
</script>
<?php } ?>
<p/>

здесь вам не нужен javascript. Пока блок заключен в php if, он не будет отображаться

Juakali92 29.07.2018 22:04

@ Juakali92 Ну, это зависит от конкретного случая использования. Это просто элементарный пример того, как серверная сторона «разговаривает» со стороной клиента. Это полностью верно, хотя ответ MatsLindh более прямолинейный.

lubosdz 30.07.2018 09:20

Оберните возвращенный результат функции оператором IF

<?php
$result = name5();
if ($result && $result !== '') { ?>
<div class='box12'>
    <h1>text<h1/>
    <p><?php echo $result ?><p/>
</div>
<?php } ?>

Вы можете попробовать эти методы.

 1-
    <div class = "box12">
      <h1>text</h1>
      <?php if (function_exists('name5')) { ?> 
        <p><?php echo name5(); ?></p>
      <?php } ?>
    </div>

    2-
    <div class = "box12">
      <h1>text</h1>
      <?php if (name5()) { ?> 
        <p><?php echo name5(); ?></p>
      <?php } ?>
    </div>

    3-
    <div class = "box12">
      <h1>text</h1>
        <?php $css = (name5()) ? "block":"none"; ?>
        <p style = "display:<?=$css?>" >
          <?php echo name5(); ?>
        </p>
    </div>

Почему поставили минус? Где я ошибся?

Haşim Yerli 29.07.2018 22:51

Добро пожаловать в SO. Я не проголосовал против вашего ответа, но вполне вероятно, что это потому, что вашему ответу не хватает объяснения. Ответы будут более полезными, если они будут конкретными. См. stackoverflow.com/help/how-to-answer.

Nick 29.07.2018 23:13

Спасибо за информацию. Обращу внимание.

Haşim Yerli 29.07.2018 23:28

Другие вопросы по теме