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)
您测试$ 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)