Php 计数然后更新数组
我有一个带有日期字段的数据库,我想计算唯一年份的数量,然后计算每年的条目数。以下是我所拥有的:Php 计数然后更新数组,php,dynamic-arrays,Php,Dynamic Arrays,我有一个带有日期字段的数据库,我想计算唯一年份的数量,然后计算每年的条目数。以下是我所拥有的: while ($row = mysql_fetch_array($sql_result)) { $Date = $row["Date"]; //DETERMINE YEARS $Year = substr("$Date",0,4); if (!in_array($Year, $allDates)){ $allDates[] = $Year;
while ($row = mysql_fetch_array($sql_result))
{
$Date = $row["Date"];
//DETERMINE YEARS
$Year = substr("$Date",0,4);
if (!in_array($Year, $allDates)){
$allDates[] = $Year;;
}
}
这就给我留下了一个数组,其中包含所有独特的年份
Array ( [0] => 2010 [1] => 2008 [2] => 2009 [3] => 2006 [4] => 2007 [5] => 2012 [6] => 2011 [7] => 2013 )
现在,我如何再次循环遍历所有条目,并合计该特定年份的记录数
提前感谢不用再次循环,您可以在同一迭代中保持每年的计数。我同意Bharat的观点 试试这样:
while ($row = mysql_fetch_array($sql_result))
{
$Date = $row["Date"];
//DETERMINE YEARS
$Year = substr("$Date",0,4);
if (!array_key_exists($Year, $allDates)){
$allDates[$Year] = $allDates[$Year]+1;
}else{
$allDates[$Year] = 1;
}
}
我想补充一下@Bharat和@Odward的答案,php中有一个函数叫做
array\u count\u values()
。您可以在PHP文档中了解它:您可以使用此功能:
$result = array_count_values($Year);
print_r($result);
输出应如下所示:
Array
(
[2012] => 2
[2009] => 4
[2010] => 3
)
我希望这有助于并原谅我的英语。为什么不在SQL查询中使用COUNT和GROUP BY呢<代码>选择年份(myDateColumn)作为“年”,从myTable GROUP BY YEAR(myDateColumn)中将(1)作为“计数”唯一年份数是返回的行数。这似乎是一个例外,它留给我的是:数组([0]=>771[1]=>1277[2]=>1379[3]=>372[4]=>1703[5]=>1473[6]=>1006[7]=>1671),我需要知道与总数相对应的日期该日期(我指的是年份)作为数组的键出现。array_key($allDates)将返回年份列表。谢谢各位。我整晚躺在床上想弄明白这一点——应该问问她;)