【发布时间】:2015-02-17 19:57:18
【问题描述】:
我正在用 PHP 制作日历,我需要计算一年中每一天的所有事件,以便正确显示图块(例如:绿色表示少数事件,橙色表示 3-4 个事件,红色表示超过 5 个事件)。
这是我用来获取所有有事件的天数以及当天事件数的查询:
$q1 = $pdo->query("SELECT day, COUNT(*) as number FROM events GROUP BY day");
数据库中有三个事件,两个在同一天,输出如下:
array(2) {
[0]=>
object(stdClass)#8 (2) {
["day"]=>
string(3) "145"
["number"]=>
string(1) "1"
}
[1]=>
object(stdClass)#9 (2) {
["day"]=>
string(3) "335"
["number"]=>
string(1) "2"
}
}
当我在 echo 的日子里,我会跟踪 $currentDay 变量,它从 1 开始,一旦最后一天是 echo ,就会在 365 结束。
我想每天获取number 的值,但是当输出是这样的多维数组时,我不知道该怎么做。
有没有办法将该数组转换为更有用的东西,我可以通过执行以下操作找到事件的数量 (number):
$array[$currentDay]["number"] = $number;
如果不是,将 SQL 查询的数量保持在最低限度的最佳方法是什么?我不想每天一次地获取一天的事件,365 次查询是疯狂的。我不确定在这种情况下最好的方法是什么。
编辑
为了输出天数,我从 1 开始到 for(月份)中的 12,每个月,我得到天数,所以它用一天来解释闰年。
我在events 表中使用day 字段的原因是因为我试图保持简单。还有一个startTime和endTime字段,都是Integer的,用来存储事件开始和结束的时间戳,虽然不知道怎么统计事件的个数使用这样的时间戳的那一天。
【问题讨论】:
-
不是每年都有 365 天
-
@Dagon 没错,我编辑了我的帖子来解释我更好地输出日子的方式。感谢您的评论。
-
我就是不明白,为什么要把这个多维数组转换成单数组呢?您可以访问这样的数据 foreach($dataArray as $data){ echo $data->number; }
-
您能否发布以下代码:“当我回显这些日子时,我会跟踪 $currentDay 变量,该变量从 1 开始,最后一天将在 365 结束已回显。"
-
虽然从技术上讲这是一个多维数组,但我不会这样想。它基本上是一个记录集。数组的第一级是行号,第二级是行的列。当它是来自数据库的记录集时,您试图将其视为一种数据结构......
标签: php arrays multidimensional-array