繁体   English   中英

在Foreach中嵌套If语句

[英]Nesting If Statement in Foreach

我试图自动排除博客中具有否定票数(<0)的条目。 以下是我使用的代码,但不排除它不断显示博客被否决的情况。 (现在在公共系统上,因此可能要等到以后再回复,但是,谢谢您的帮助!)

$id = $_GET['id']; // get initial query from index

            $table = 'txt';
            $item = 'vt_' .$table.($_GET['id']);

            $db = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass');

$sql = $db->query('SELECT * from txt ORDER BY ID DESC LIMIT 10 OFFSET '.$browse);


$stmt = $db->prepare('SELECT vote FROM voting where item = ?');
($stmt->execute(array($item)));
($vrow = $stmt->fetch(PDO::FETCH_ASSOC));

            foreach ($sql as $row) {
            if ($vrow['vote'] < 0){
              echo "<b>Update:</b><br>";
              echo "<font color = 'red'><i>", "This Update,", "</i></font>", "<br>";
              echo "By: ", ($row['username']), "<br>"; 
              echo "At: ", ($row['timestamp']), "<br>";
              echo "<font color = 'red'><i>Has been</i> <b>Voted Out</b></font>", "<br>";
              echo "<span class='loginnotreq'>", "<b>", ($row['edited']), "</b>", "&nbsp;", "&nbsp;", "<span 

class='loginreq'>", "<b>", ($row['locked']), "</b>", "</span>", "</span>";
              echo "&nbsp;", "&nbsp;";
              if($row['locked'] !='locked'){
              echo "&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

&nbsp;&nbsp;<a href ='edit-post-login.php?pid=".$row['id']."&login=true&edit=true' method='post' id ='form-id' 

data-ajax='false' '><b><span class = 'neutral'>edit post</span></b></a>";}

              echo "&nbsp;", "&nbsp;";


              echo "<div class='vot_updown2' id=" . 'vt_' .$table.($row['id']). "></div><br>";              
              }
              else {
              echo "<b>Update:</b><br>";
              echo ($row['message']), "<br>";
              echo "By: ", ($row['username']), "<br>"; 
              echo "At: ", ($row['timestamp']), "<br>";              
              echo "<span class='loginnotreq'>", "<b>", ($row['edited']), "</b>", "&nbsp;", "&nbsp;", "<span 

class='loginreq'>", "<b>", ($row['locked']), "</b>", "</span>", "</span>";
              echo "&nbsp;", "&nbsp;";
              if($row['locked'] !='locked'){
              echo "&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

&nbsp;&nbsp;<a href ='edit-post-login.php?pid=".$row['id']."&login=true&edit=true' method='post' id ='form-id' 

data-ajax='false' '><b><span class = 'neutral'>edit post</span></b></a>";}

              echo "&nbsp;", "&nbsp;";


              echo "<div class='vot_updown2' id=" . 'vt_' .$table.($row['id']). "></div><br>";
              }

              }

您可以将查询更改为仅返回票数等于或大于零的行:

例如:

SELECT vote FROM voting where item = ? and vote >= 0

这样,您就不需要循环中的条件了。 您只需要处理票数大于或等于零的部分。

最简单的答案(无需复制和粘贴所有代码):

foreach($row as $post) {
  if($post['rating'] >= 0) {
    //do something
  }
}

将值解析为INT ,因为它来自数据库时通常采用String的形式:

 if ( (int)$vrow['vote'] < 0){ ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM