Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计数然后更新数组_Php_Dynamic Arrays - Fatal编程技术网

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)将返回年份列表。谢谢各位。我整晚躺在床上想弄明白这一点——应该问问她;)