[英]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
( number
):
$array[$currentDay]["number"] = $number;
如果不是,那么將SQL查詢的數量限制在最低限度的最佳方法是什么? 我不想每天結束一天一次的活動,對此有365個查詢很瘋狂。 我不確定在這種情況下最好的方法是什么。
編輯
要輸出的日子里,我從1開始,到12中for
(月),以及每個月,我得到的天數,所以它占閏年有一天。
我在events
表中使用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>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.