PHP - если переменная не пуста, введите html-код - PullRequest
36 голосов
/ 07 марта 2012

Я хотел бы отобразить некоторый HTML-код, если переменная не пуста, иначе я бы не хотел ничего отображать.

Я пробовал этот код, но не работает:

<?php 
    $web = the_field('website');
    if (isset($web)) {
?>
       <span class="field-label">Website: </span><a href="http://<?php the_field('website'); ?>" target="_blank"><?php the_field('website'); ?></a> 
<?php
    } else { 
        echo "Niente";
    }
?>

Ответы [ 10 ]

77 голосов
/ 07 марта 2012
if (!empty($web)) {
?>
    <span class="field-label">Website:  </span><a href="http://<?php the_field('website'); ?>" target="_blank"><?php the_field('website'); ?></a> 
<?php
} else { echo "Niente";}

http://us.php.net/manual/en/function.empty.php

16 голосов
/ 07 марта 2012

isset вернет true , даже если переменная равна "".isset возвращает false только в том случае, если переменная null .Что вы должны делать:

if (!empty($web)) {
    // foo
}

Это проверит, что переменная не пуста.

Надеюсь, это поможет

10 голосов
/ 07 марта 2012

Просто используйте if ($web). Это true, если переменная имеет какое-либо истинное значение.

Вам не нужны isset или empty, поскольку вы знаете, что переменная существует, поскольку вы только что установили ее в предыдущей строке.

2 голосов
/ 09 апреля 2018

Я не понимаю, как if(!empty($var)) может создать путаницу, но я согласен, что if ($var) проще.- vanneto 8 марта 12 в 13: 33

Поскольку empty имеет особую цель подавления ошибок для несуществующих переменных.Вы не хотите подавлять ошибки, если вам не нужно. Полное руководство по PHP isset И empty объясняет проблему подробно.- deceze ♦ 9 марта '12 в 1: 24

Сосредоточение на части подавления ошибок, если переменная являетсямассив , где ключ , к которому осуществляется доступ , может быть или не быть определен :

  1. if($web['status']) будет производить:

    Примечание : неопределенный индекс: статус

  2. Чтобы получить доступ к этому ключу без ошибок:
    1. if(isset($web['status']) && $web['status']) (2-е условиене проверяется, если 1-е число FALSE) ИЛИ
    2. if(!empty($web['status'])).

Однако, как deceze ♦ указал , истинное значение определенной переменной делает !empty избыточным, но вы все равно должны помнить, что PHP предполагает следующие примеры как FALSE:

  • null
  • '' или ""
  • 0.0
  • 0
  • '0' или "0"
  • '0' + 0 + !3

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

Безошибочное и ноль обнаружение:

if(isset($web['status'])){
  if($web['status'] === '0' || $web['status'] === 0 ||
     $web['status'] === 0.0 || $web['status']) {
    // not empty: use the value
  } else {
    // consider it as empty, since status may be FALSE, null or an empty string
  }
}

Общее условие ($web['status']) следует оставить в конце всего оператора.

0 голосов
/ 04 февраля 2016

Кажется, что люди немного усложняют это. Вернуться к исходному вопросу, " ... если переменная не пуста, откройте html-код." «Я хотел бы отобразить некоторый HTML-код, если переменная не пуста, иначе я бы не хотел ничего отображать. »

Простой способ:

<?php if (!empty($var)) echo "Some Html Code Here"; ?>

Если ваша переменная не пуста, будет отображаться «HTML-код здесь». Если он пуст, ничего не произойдет.

0 голосов
/ 12 ноября 2015

Надеюсь, это тоже сработает, попробуйте использовать "is_null"

<?php 
$web = the_field('website');
if (!is_null($web)) {
?>

....html code here

<?php
} else { 
    echo "Niente";
}
?>

http://php.net/manual/en/function.is-null.php

надеюсь, что вам подходит ..

0 голосов
/ 20 марта 2015

Ваша проблема в использовании the_field(), который предназначен для расширенных пользовательских полей, плагина WordPress.

Если вы хотите использовать поле в переменной, вы должны использовать это: $web = get_field('website');.

0 голосов
/ 26 февраля 2014
if($var !== '' && $var !== NULL)
{
   echo $var;
}
0 голосов
/ 07 марта 2012

Вы используете isset, isset проверяет, установлена ​​ли переменная («существует») и не является ли NULL.То, что вы ищете, это empty, который проверяет, является ли переменная пустой или нет, даже если она установлена.Чтобы проверить, что пусто, а что нет, взгляните на:

http://php.net/manual/en/function.empty.php

Также проверьте http://php.net/manual/en/function.isset.php, что именно делает isset, чтобы вы понимали, почему этоне делает то, что вы ожидаете.

0 голосов
/ 07 марта 2012
if(!empty($web))
{
   echo 'Something';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...