【发布时间】:2013-04-12 06:50:05
【问题描述】:
我有几个月的数据库。我正在使用以下内容对相似的月份进行分组:
$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) 三月 三月 ETC..... 等等……
我怎样才能让它像这样只显示一次:
一月(3) 二月(1) 三月 等等……
现在我注意到,添加的月份越多,重复的次数就越多。有人可以看看这个并告诉我我哪里出错了吗?
【问题讨论】:
-
这是因为你的 foreachloop.在找到正确的匹配项后,您需要摆脱它。
-
您想将一整个月的所有数字相加吗?
-
我同意 Daryl 的观点,但如果能提供更多信息会很好。
-
用 COUNT 和 GROUP BY 编写 SQL 查询不是更有意义吗? stackoverflow.com/questions/2866764/… 之类的东西?
-
@MikePurcell 我已经这样做了,并且大部分情况下该部分工作正常。我的问题是当我试图匹配它不断重复结果的月份列表时。