如果这回应这个 - 如果变量没有回声什么

时间:2014-08-03 13:44:30

标签: php

我在我的网站上添加了一个脚本,当产品过滤器没有显示任何结果时会显示一条消息。我包含的代码是:

<?php
if(empty($htmlFilter->rows)){
  echo '<p>Sorry, no results found - try a different search selection</p>';
}
?>

这样可行,但我遇到的问题是该消息也显示在不存在过滤器的页面上。我需要为页面上不存在过滤器的时间写一个条件。

有人可以帮忙吗?

快速更新:当我添加var_dump($ htmlFilter)时,它来自su​​p

变量不对吗?

5 个答案:

答案 0 :(得分:1)

通常你会期望一个未定义的变量错误,但它静默地只评估为true,即使没有设置变量,这也是一件坏事,因为不是每个人都知道这一点。

作为一种解决方法,您可以在检查变量是否为空之前另外检查变量是否已设置。

if (isset($htmlFilter) && empty($htmlFilter->rows)) {
    echo '<p>Sorry, no results found - try a different search selection</p>';
}

答案 1 :(得分:0)

如果我得到了你所写的内容,你可以使用这样的isset函数。

<?php
if(empty($htmlFilter->rows) && isset($htmlFilter)){
  echo '<p>Sorry, no results found - try a different search selection</p>';
}
?>

编辑:

此代码:

<?php
echo is_null($algo);
echo '<br>';
echo isset($algo);
echo '<br>';
echo empty($algo);
?>

返回:

1

1

如您所见,变量$ algo未初始化也未声明。

答案 2 :(得分:0)

你能试试......

<?php
if( isset($htmlFilter->rows) && empty($htmlFilter->rows) ) {
  echo '<p>Sorry, no results found - try a different search selection</p>';
}
?>

答案 3 :(得分:0)

如果$ htmlFilter-&gt;行应该是一个数组,你可以这样做:

<?php
if(isset($htmlFilter->rows) && count($htmlFilter->rows) === 0){
  echo '<p>Sorry, no results found - try a different search selection</p>';
}
?>

答案 4 :(得分:0)

我终于解决了这个问题 - 我使用了以下代码:

if(empty($this->rows) && !empty($htmlFilter)){
echo '<p>Sorry, no results found - try a different search selection</p>'

它也没有放在正确的行中: - /

现在所有排序 - 感谢您的帮助! : - )