0

我正在尝试使用 PHPwhile循环计算我的 MySQL 表中某些日期的出现次数,并将日期和重复次数放在array. 我能够正确地将日期添加到数组中,但我似乎无法添加重复次数。

例子:

function counter() {
//The 'timestamp' column uses the MySQL timestamp type
$query = mysql_query("SELECT timestamp FROM table1 ORDER BY timestamp DESC");

$date_c;
$counter = 0;
$date_array();

while($row = mysql_fetch_array($query)) {
    //gets the year, month, and day from the timestamp
    $year = substr($row['timestamp'], 0, 4);
    $month = substr($row['timestamp'], 5, 2);
    $day = substr($row['timestamp'], 8, 2);
    $date = $month.'/'.$day.'/'.$year;

    if($date == $date_c) {
        $counter += 1;
    } else {
        array_push($date_array, $date, $counter);
        $counter = 0;
    }

    $date_c = $date;

但是,当我echo成为数组的一部分时,计数器不会更新。这是一个使用第一个重复日期的示例table1

>>> echo $date;
06/15/2012
>>> echo $counter;
25
>>> echo $date_array[0];
06/15/2012
>>> echo $date_array[1];
0

我已经玩了一段时间了,但我似乎找不到我的错误。有谁知道我做错了什么?

4

2 回答 2

2

您还想对这些行做些什么吗?因为这对我来说似乎更容易:

 SELECT DATE_FORMAT(timestamp,'%m/%d/%Y') as 'date', COUNT(*) as 'count'
 FROM table1 
 GROUP BY DATE_FORMAT(timestamp,'%m/%d/%Y')
 ORDER BY timestamp DESC

...并且 php 代码中的问题可能是最后一个日期/计数未推送到(如果最后一次迭代没有在数组上推送计数器,则 array_push 在 while 循环完成$date_array必须再次运行.....)

于 2012-06-19T15:54:56.833 回答
1

同意 Wrikken,您可以在 SQL 中获取唯一日期的计数,而不需要在 PHP 中进行。

但是,如果您确实想计算每个日期的实例,我会使用 PHP 中数组的关联数组功能。所以像:

$query = mysql_query("SELECT timestamp FROM table1");
$date_array = array();

while($row = mysql_fetch_array($query)) {
    $year = substr($row['timestamp'], 0, 4);
    $month = substr($row['timestamp'], 5, 2);
    $day = substr($row['timestamp'], 8, 2);

    $date = $month.'/'.$day.'/'.$year;

    // Using the @ symbol to suppress warnings for missing index
    @ $date_array[$date]++;
}

print_r($date_array);

在该循环结束时, $date_array 是一个关联数组,其中日期为键,出现次数为值。

于 2012-06-19T17:25:08.747 回答