在 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() 函数将时间戳格式化为我们需要的时间段,然后按这些时间段进行分组。