在PHP 中, array_chunk函數可以將一個大的數組分割成多個小的數組。雖然array_chunk通常是按數組的固定長度來分組,但是在一些場景中,我們可能需要按時間段(如每小時、每天等)來對數組進行分組。本篇文章將介紹如何通過array_chunk來實現按時間段分組數組。
array_chunk是PHP 中用於將一個大的數組分割成多個小數組的函數。它的基本語法如下:
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$array :需要分割的數組。
$size :每個小數組的最大元素數量。
$preserve_keys :是否保留原數組的鍵名,默認是false 。
假設我們有一個時間戳數組,需要按每小時或每天的時間段來分組。我們可以使用array_chunk來幫助我們實現這一目標。
首先,我們可以創建一個時間戳數組,然後按小時將其分組。我們需要做的是將時間戳轉換為小時,並將具有相同小時的時間戳歸為一組。
// 模擬時間戳數組
$timestamps = [
1617763200, // 2021-04-07 00:00:00
1617766800, // 2021-04-07 01:00:00
1617770400, // 2021-04-07 02:00:00
1617802800, // 2021-04-07 06:00:00
1617806400, // 2021-04-07 07:00:00
1617810000, // 2021-04-07 08:00:00
1617813600 // 2021-04-07 09:00:00
];
// 將時間戳按小時分組
$groupedByHour = [];
foreach ($timestamps as $timestamp) {
$hour = date('Y-m-d H', $timestamp); // 按小時格式化時間戳
$groupedByHour[$hour][] = $timestamp;
}
// 輸出按小時分組的數組
print_r($groupedByHour);
以上代碼將會根據每個時間戳的小時部分對時間戳進行分組,輸出的數組會按照小時分組,例如:
Array
(
[2021-04-07 00] => Array
(
[0] => 1617763200
)
[2021-04-07 01] => Array
(
[0] => 1617766800
)
[2021-04-07 02] => Array
(
[0] => 1617770400
)
[2021-04-07 06] => Array
(
[0] => 1617802800
)
[2021-04-07 07] => Array
(
[0] => 1617806400
)
[2021-04-07 08] => Array
(
[0] => 1617810000
)
[2021-04-07 09] => Array
(
[0] => 1617813600
)
)
我們也可以按天將時間戳分組,這樣每個分組會包含一天內的所有時間戳。
// 將時間戳按天分組
$groupedByDay = [];
foreach ($timestamps as $timestamp) {
$day = date('Y-m-d', $timestamp); // 按天格式化時間戳
$groupedByDay[$day][] = $timestamp;
}
// 輸出按天分組的數組
print_r($groupedByDay);
輸出的結果將會是按天分組:
Array
(
[2021-04-07] => Array
(
[0] => 1617763200
[1] => 1617766800
[2] => 1617770400
[3] => 1617802800
[4] => 1617806400
[5] => 1617810000
[6] => 1617813600
)
)
通過array_chunk ,我們可以輕鬆地將一個時間戳數組按時間段(如每小時、每天等)進行分組。雖然array_chunk通常用於按元素個數分組,但在這裡,我們利用date()函數將時間戳格式化為我們需要的時間段,然後按這些時間段進行分組。