需要简单的php foreach循环帮助

需要简单的php foreach循环帮助,php,foreach,Php,Foreach,我有一个类似这样的循环 $sn_count = 1; $prodfilter = ""; foreach($prods as $prod){ $prodfilter .= "<div class=\"product\">".$prod['product'][1]."</div>"; $sn_count++; } echo $prodfilter; 我试过了 if(!empty($

我有一个类似这样的循环

      $sn_count = 1;
      $prodfilter = "";
      foreach($prods as $prod){
        $prodfilter .= "<div class=\"product\">".$prod['product'][1]."</div>";
        $sn_count++;
      }
      echo $prodfilter;
我试过了

if(!empty($prod['product'][1])) {
$prodfilter .= "<div class=\"product\">".$prod['product'][1]."</div>";
 }
if(!empty($prod['product'][1])){
$prodfilter.=''.$prod['product'][1]。'';
}

但它不起作用

你可以尝试几种方法

先试试这个

if(strlen(trim($prod['product'][$sn_count]))>0) {
 $prodfilter .= "<div class=\"product\">".$prod['product'][$sn_count]."</div>";
  }
if(strlen(trim($prod['product'][$sn_count]))>0){
$prodfilter.=''.$prod['product'][$SNU count]。'';
}

if(isset($prod['product'][$sn\u count])){
$prodfilter.=''.$prod['product'][$SNU count]。'';
}

正确的做法是在您尝试时检查它是否为空,但由于它失败了,显然那里有一些数据。你可以做一个var_转储,弄清楚它是什么,为什么存在,这可能会导致你找到问题的根源


如果可用,您的意思是声明,那么顺便说一下,isset是正确的函数。

我认为正确的方法是检查返回的行数。我假设您正在使用MySQL,因为您没有指定。如果您不使用它,请寻求其他帮助


这应该检查您的查询是否返回了超过0行(因此需要绘制)。它解决了吗?

等等,您的循环在
$steps
上迭代,但您正在测试并输出
$prod
??每次循环迭代都会得到相同的结果。@Michael:我也注意到了,但我假设他遗漏了其他代码来缩短它。如果密钥不存在,它会警告您密钥不存在。没错。肮脏的伎俩是将@prepend添加到$prod以抑制警告;)哪一种不受欢迎的方式将起作用。
if(strlen(trim($prod['product'][$sn_count]))>0) {
 $prodfilter .= "<div class=\"product\">".$prod['product'][$sn_count]."</div>";
  }
if(isset($prod['product'][$sn_count])) {
 $prodfilter .= "<div class=\"product\">".$prod['product'][$sn_count]."</div>";
  }
if (mysql_num_rows($prods)!=0) {
    //Do your code
}