Ответ 1
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";}
Я хотел бы отобразить некоторый html-код, если переменная не пуста, иначе я бы ничего не показывал.
Я пробовал этот код, но не работал:
<?php
$web = the_field('website');
if (isset($web)) {
?>
<span class="field-label">Website: </span><a href="#" onclick="location.href='http://<?php the_field('website'); ?>'; return false;" target="_blank"><?php the_field('website'); ?></a>
<?php
} else {
echo "Niente";
}
?>
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";}
isset
вернет true, даже если переменная равна "". isset
возвращает false, только если переменная null. Что вы должны делать:
if (!empty($web)) {
// foo
}
Это проверит, что переменная не пуста.
Надеюсь, что это поможет
Просто используйте if ($web)
. Это true
, если переменная имеет какое-либо правное значение.
Вам не нужно isset
или empty
, поскольку вы знаете, что переменная существует, поскольку вы только что установили ее в предыдущей строке.
Я не понимаю, как
if(!empty($var))
может создать путаницу, но я согласен, чтоif ($var)
проще. - Ваннето 8 марта '12 в 13:33Потому что
empty
имеет особую цель подавления ошибок для несуществующих переменных. Вы не хотите подавлять ошибки, если вам не нужно. Полное руководство по PHPisset
Andempty
подробно объясняет проблему. - deceze ♦ 9 марта '12 в 1:24
Фокусируясь на части подавления ошибок, если переменная является массивом, в котором доступ к ключу может быть или не быть определен:
if($web['status'])
выдаст: Примечание: неопределенный индекс: статус
if(isset($web['status']) && $web['status'])
(2-е условие не проверяется, если 1-е условие FALSE
) ИЛИif(!empty($web['status']))
. Однако, как указал deceze ♦, истинное значение определенной переменной делает !empty
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']
) должно быть оставлено в конце всего оператора.
if(!empty($web))
{
echo 'Something';
}
Вы используете isset
, то, что isset
делает, проверяет, установлена ли переменная (существует), а не NULL
. То, что вы ищете, это empty
, который проверяет, является ли переменная пустой или нет, даже если она задана. Чтобы проверить, что пусто, а что нет, посмотрите:
http://php.net/manual/en/function.empty.php
Также проверьте http://php.net/manual/en/function.isset.php для чего именно isset
делает это, поэтому вы понимаете, почему он не делает то, что вы ожидаете от него.
if($var !== '' && $var !== NULL)
{
echo $var;
}
Ваша проблема заключается в использовании the_field()
, который предназначен для дополнительных пользовательских полей, плагина wordpress.
Если вы хотите использовать поле в переменной, вы должны использовать это: $web = get_field('website');
.
Я надеюсь, что это тоже сработает, попробуйте использовать "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
надеюсь, что вам подходит.
Кажется, люди немного усложняют это. Вернемся к исходному вопросу, "... если переменная не пуста, эхо-код html". "Я бы хотел отобразить некоторый HTML-код, если переменная не пуста, иначе я бы ничего не показывал".
Простой способ:
<?php if (!empty($var)) echo "Some Html Code Here"; ?>
Если ваша переменная не пуста, будет отображаться "Некоторый код HTML здесь". Если он пуст, ничего не произойдет.