當前位置: 首頁> 最新文章列表> 用array_chunk 將數組數據按每小時、每天等時間段拆分

用array_chunk 將數組數據按每小時、每天等時間段拆分

M66 2025-04-26

在PHP 中, array_chunk函數可以將一個大的數組分割成多個小的數組。雖然array_chunk通常是按數組的固定長度來分組,但是在一些場景中,我們可能需要按時間段(如每小時、每天等)來對數組進行分組。本篇文章將介紹如何通過array_chunk來實現按時間段分組數組。

1. 什麼是array_chunk函數?

array_chunk是PHP 中用於將一個大的數組分割成多個小數組的函數。它的基本語法如下:

 array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $array :需要分割的數組。

  • $size :每個小數組的最大元素數量。

  • $preserve_keys :是否保留原數組的鍵名,默認是false

2. 按時間段分組數組

假設我們有一個時間戳數組,需要按每小時或每天的時間段來分組。我們可以使用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
        )
)

3. 總結

通過array_chunk ,我們可以輕鬆地將一個時間戳數組按時間段(如每小時、每天等)進行分組。雖然array_chunk通常用於按元素個數分組,但在這裡,我們利用date()函數將時間戳格式化為我們需要的時間段,然後按這些時間段進行分組。