当找到匹配时,我的循环将结果加倍

时间:2013-04-11 22:41:06

标签: php loops

我有几个月的数据库。我使用以下内容对类似的月份进行分组:

$Mydates = array();
while(........)
{
    $date = $row['date'];
    $Mydates[$date] = (isset($Mydates[$date])) ? $Mydates[$date] + 1: 1;
}

我的表包含4个数据,1月3日和2月1日。现在,此信息通过包含一年中几个月的数组运行。以下是我到目前为止的情况:

   $months = array("Jan","Feb","Mar",etc........);
    foreach($months as $month)
    {
      foreach($Mydates as $Mydate => $Number)
      {
      if($month == $Mydate)
         {
         echo $month." (".$Number.")<br />";
         }else{
         echo $month."<br />";
         }
      }
    }

现在当只有Jan的时候这很好用。现在我已经添加了另一个月,我的结果显示如下:

月(3) 一月(3) 二月(1) 二月(1) 损伤 损伤 等等..... 等.....

我怎样才能让它只显示一次:

月(3) 二月(1) 损伤 等....

现在我注意到,添加的月份越多,重复的越多。有人可以看看这个并告诉我这里哪里出错吗?

1 个答案:

答案 0 :(得分:2)

似乎$Mydates已经汇总并且可以按月访问。如果$Mydates

中有相应的月份,请移除内部循环并查看
foreach($months as $month) {
    if(isset($Mydates[$month])) {
        echo $month." (".$Mydates[$month].")<br />";
    } else {
        echo $month."<br />";
    }
}