用if(emtpy)语句进行Foreach

时间:2019-02-13 05:23:14

标签: php codeigniter codeigniter-3

因此,我在一个站点中有多个类别,我使用foreach从数据库中提取列表。如果数据库没有要返回的内容,我试图在视图中显示什么都没返回

视图

<?php foreach ($posts as $post): { ?>

<?php if(empty($post['title'])){
   echo "Nothing found";
}else{?>

<html> 
<body> 

  <?php echo $post['title'];?>
 <?php echo $post['style'];

 </body>
 </html>                        

        <?php } ?>                       

<?php }endforeach; ?>

因此,如果我放if(!empty())

,这似乎是相反的

我对CodeIgniter还是有点新鲜,如果这是一个基本问题,请您谅解。

5 个答案:

答案 0 :(得分:1)

做这样的事情:

if (empty($posts)) {
    echo "Nothing returned.";
} else {
    foreach($posts as $post) {
        // Display each post
    }
}

首先尝试检查$posts中是否有任何内容,然后尝试使用foreach使其变得自然。

答案 1 :(得分:0)

如果var存在并且具有非空,非零值,则

empty()返回FALSE。否则返回TRUE。

因此,如果要执行语句echo“ Nothing found”;那么您必须使用!empty(),或者也可以使用isset()函数。如果将值设置为变量,则isset()将返回True。

see details

答案 2 :(得分:0)

尝试在isset()条件下使用not(!)函数

如果您使用冒号:,请不要在{}循环中使用大括号foreach

if(isset($posts) && count($posts) > 0){
foreach ($posts as $post){ 

if(!isset($post['title'])){
   echo "Nothing found";
}else{?>

    <html> 
    <body> 

    <?= $post['title'] ?>
    <?= $post['style'] ?>

    </body>
    </html>                        

<?php } } }else{ echo 'No record found';}?>

答案 3 :(得分:0)

只需运行您的代码-您在“样式”行的末尾缺少一个封闭的php标记:

<?php echo $post['style']; ?>

或者,您可以将内容压缩如下:

echo "<html><body>";
if(empty($posts)){
        echo "Nothing found";
}else{
    foreach ($posts as $post){
        echo $post['title'];
        echo $post['style'];
    }
}
echo "</body></html>";

答案 4 :(得分:0)

    <?php if(empty($posts) { 
  echo "Nothing returned."; 
 } else{ 

foreach ($posts as $post) { ?>

    <?php if(empty($post['title'])){
       echo "Nothing found";
    }else{?>

    <html> 
    <body> 

      <?php echo $post['title'];?>
     <?php echo $post['style'];

     </body>
     </html>                        

            <?php } ?>                       

    <?php } } endforeach; ?>