簡體   English   中英

將多維數組轉換為“單個”數組

[英]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值,但是當輸出是這樣的多維數組時,我不知道該怎么做。

有沒有一種方法可以將該數組轉換為更有用的東西,在這里我可以通過執行以下操作找到事件numbernumber ):

$array[$currentDay]["number"] = $number; 

如果不是,那么將SQL查詢的數量限制在最低限度的最佳方法是什么? 我不想每天結束一天一次的活動,對此有365個查詢很瘋狂。 我不確定在這種情況下最好的方法是什么。

編輯

要輸出的日子里,我從1開始,到12中for (月),以及每個月,我得到的天數,所以它占閏年有一天。

我在events表中使用day字段的原因是因為我試圖使事情保持簡單。 還有一個startTimeendTime字段,都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM