将多维数组转换为 "single" 数组
Converting multi-dimensional array to "single" array
我正在 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
table 中使用 day
字段的原因是我试图让事情变得简单。还有一个 startTime 和 endTime 字段,都是 Integer 来存储事件开始和结束的时间戳,虽然我不知道如何使用这样的时间戳计算当天的事件数。
我认为最简单的方法就是一个简单的循环:
// Initialize $q1 as you did..
$q1 = ... get stuff from DB
$q2 = array();
foreach ($q1 as $row) {
$q2[$row['day']] = $row['number'];
}
// At this point, $q2 is the array you want to have.
不过,如果你只想输出数字,你可以只写循环而不用额外的数组。
foreach ($q1 as $row) {
echo "number for ".$row['day']." is ".$row['number']."<br>";
}
我正在 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
table 中使用 day
字段的原因是我试图让事情变得简单。还有一个 startTime 和 endTime 字段,都是 Integer 来存储事件开始和结束的时间戳,虽然我不知道如何使用这样的时间戳计算当天的事件数。
我认为最简单的方法就是一个简单的循环:
// Initialize $q1 as you did..
$q1 = ... get stuff from DB
$q2 = array();
foreach ($q1 as $row) {
$q2[$row['day']] = $row['number'];
}
// At this point, $q2 is the array you want to have.
不过,如果你只想输出数字,你可以只写循环而不用额外的数组。
foreach ($q1 as $row) {
echo "number for ".$row['day']." is ".$row['number']."<br>";
}