PHP foreach循环呈现了一个额外的列表项

时间:2019-01-16 22:28:30

标签: php

我正在foreach循环中显示多余的项目。我无法在下面找到我特定代码的答案:

<?php
if(count($catArr['details'][$id])>0){
  $ik=1;
  foreach($catArr['details'][$id] as $pv=>$pArr){
      if($ik == count($catArr['details'][$id])){
          echo '<a class="set_color2 linehigh4 w_600 s_1-3" href="/products.php?pid='.$pArr['pid'].'&cid='.$pArr['cid'].'&p_id='.$pArr['id'].'">'.$pArr['pname'].'</a>';
      }else{
          echo '<a class="set_color2 linehigh4 w_600 s_1-3" href="/products.php?pid='.$pArr['pid'].'&cid='.$pArr['cid'].'&p_id='.$pArr['id'].'">'.$pArr['pname'].' </a>';
      }//end if
      $ik++;
  }
}
?>

下面的浏览器中呈现的HTML只是一个片段,其中将中间的href展示为问题区域,该区域未提供任​​何元素,但仍在浏览器中显示为空链接[查看随附的图像***]:-

<a class="set_color2 linehigh4 w_600 s_1-3" href="/products.php?pid=34&cid=38&p_id=17">347 </a>

<a class="set_color2 linehigh4 w_600 s_1-3" href="/products.php?pid=34&cid=39&p_id=">  </a>

<a class="set_color2 linehigh4 w_600 s_1-3" href="/products.php?pid=34&cid=40&p_id=18">409 </a>

图片附件*** [[https://drive.google.com/file/d/1HEJKFOALSMDAuuRF_0KcgXVlUYmkFAaA/view?usp=sharing]

1 个答案:

答案 0 :(得分:0)

问题出在数组中。您在与“ id”和“ pname”相对应的字段中具有空值或空值。 您应该首先避免将它们放在数组中,但是如果您不能帮助,则请在循环内进行null检查以跳过该项目。

这是一个带有一些重构的代码段,以阐明其功能,因为唯一的区别是最后一项的额外空白。

<?php
  if(count($catArr['details'][$id]) > 0){

      $ik=1;
      $count = count($catArr['details'][$id]);
      $space = '';

      foreach($catArr['details'][$id] as $pv => $pArr){

          if($ik == $count){
              $space = ' ';
          }

          if($pArr['id'] != null && $pArr['pname'] != null){
            echo '<a class="set_color2 linehigh4 w_600 s_1-3" href="/products.php?pid='.$pArr['pid'].'&cid='.$pArr['cid'].'&p_id='.$pArr['id'].'">'.$pArr['pname'] . $space . '</a>'; 
          }

          $ik++;
      }
  }
?>