PHP оператор if при проверке значения переменной - PullRequest
0 голосов
/ 22 сентября 2009

Я пытаюсь написать простой PHP-оператор if, который проверяет, введено ли в произвольное поле что-либо или оно оставлено пустым.

когда оно пустое, оно не должно ничего печатать на странице, если что-то установлено в настраиваемом поле, то следует создать элемент li с тегом внутри него.

вот мой код:

<ul class="externalLinks">
<? $emptycheck = get('linkname',2,1,0);

if (isset($emptycheck)){ ?>
   <li><a href="<? echo get('targethref',2,1,0); ?>"><? echo get('linkname',2,1,0);?></a></li>
<? } else { '' } ?>

<li><a href="<? echo get('PDFdownload'); ?>">Download a PDF of this project</a></li>
</ul>

Пользовательские поля в этом случае устанавливаются администратором WordPress (через плагин флаттера). У меня проблема просто в том, что если пользовательские поля оставить пустыми

<li><a></a></li> 

создано.

get ('linkname', 2,1,0) возвращает содержимое поля, очевидно (эта часть работает).

Любые идеи будут высоко оценены.

Спасибо, Jannis

Ответы [ 2 ]

5 голосов
/ 22 сентября 2009

Если переменная пуста, это не значит, что она не isset ().

Вы хотите проверить, является ли он пустым () или нет.

$whatever = get('whatever',2,1,0)
if (! empty($whatever)){
//output your stuff
}

Для ясности: isset () просто скажет вам, существует ли имя переменной в таблице символов. empty () вернет true, когда переменная пуста.

Согласно документации:

Следующие вещи считаются быть пустым:

  • "" (пустая строка)
  • 0 (0 в виде целого числа)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array () (пустой массив)
  • var $ var; (объявленная переменная, но без значения в классе)

Отредактировано: empty () является особенным и работает только с обычной переменной. Вы не можете проверить выражение (например, возвращаемое значение функции) с помощью empty (). Это четко задокументировано на странице руководства.

1 голос
/ 22 сентября 2009

Вы устанавливаете $ emptycheck независимо, если возвращаемое значение ложно, вы можете захотеть

if ( $emptycheck ) {
} else {
}

В противном случае оно всегда будет оцениваться как истинное. Или переверните логику с помощью оператора отрицания (!), Если все наоборот.

...