PHP,如果foreach语句有效,但其他消息不显示

cho*_*wwy 2 php foreach if-statement

我从我的模型中获取数据数组,并使用php foreach语句在视图中显示它。我添加了另一层逻辑,以仅显示某些bookmark_id。

数据显示正常;但是由于某种原因,如果没有返回任何数据,则不会显示“ else”消息(附加到第一个if子句)。我需要弄清楚如何显示该消息。

<?php 

     if ($bookmark): 
     foreach($bookmark as $b): ?>               

     <?php if ($b->bookmark_id != 0) { ?>               

     <li><?php echo $bk->user_id; ?> <?php echo $bk->bookmark_name; ?></li>

     <?php } ?>


     <?php
      endforeach;
        else:
          print "Your bookmark list is empty.";
    endif;

?>
Run Code Online (Sandbox Code Playgroud)

Zuu*_*uul 5

您测试$ bookmark是否存在!我认为它总是存在的,要么是空的,要么是值数组!

尝试这个:

<?php 

if (is_array($bookmark) && count($bookmark)>=1): 
  foreach($bookmark as $b): ?>               

  <?php if ($b->bookmark_id != 0) { ?>               

    <li><?php echo $bk->bookmark_name; ?></li>

  <?php } ?>


  <?php
  endforeach;
else:
  print "Your bookmark list is empty.";
endif;

?>
Run Code Online (Sandbox Code Playgroud)

阅读:PHP is_array() | 计数()

已编辑

与最近发表的评论有关: “是的,数组正在返回结果;我正在使用第二个if语句来限制显示的内容。听起来我的else语句应该绑定到第二个if子句,而不是第一个。对我来说,不是是否有结果;而是结果过滤后是否还剩下任何东西。”

<?php 

// reset variable
$count = 0;

// if it is an array and is not empty
if (is_array($bookmark) && count($bookmark)>=1): 
  foreach($bookmark as $b):
    if ($b->bookmark_id != 0) {               
      echo '<li>' . $bk->bookmark_name . '</li>';
    } else {
      $count++; // no data, increase
    }

    // check if the counter was increased 
    if ($count>=1) {
      print "Your bookmark list is empty.";
    }
  endforeach;
else:
  print "bookmark not found.";
endif;

?>
Run Code Online (Sandbox Code Playgroud)