PHPでは、 Array_Chunk関数は大きな配列を複数の小さな配列に分割できます。 Array_chunkは通常、アレイの固定長でグループ化されていますが、一部のシナリオでは、アレイを期間(1時間ごと、1日など)グループ化する必要がある場合があります。この記事では、 array_chunkを介して期間ごとに配列を実装する方法を紹介します。
array_chunkは、大規模な配列を複数の小さなアレイに分割するPHPの関数です。その基本的な構文は次のとおりです。
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$配列:分割する必要がある配列。
$サイズ:小さな配列あたりの要素の最大数。
$ preserve_keys :元の配列のキー名を保持するかどうか、デフォルトはfalseです。
毎時または毎日の期間ごとにグループ化する必要があるタイムスタンプの配列があるとします。 Array_chunkを使用して、これを達成するのに役立ちます。
まず、タイムスタンプの配列を作成して、1時間ごとにグループ化できます。私たちがする必要があるのは、タイムスタンプを1時間に変換し、タイムスタンプを同じ時間にグループにグループ化することです。
// タイムスタンプアレイをシミュレートします
$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
];
// グループタイムスタンプを1時間ごとに
$groupedByHour = [];
foreach ($timestamps as $timestamp) {
$hour = date('Y-m-d H', $timestamp); // タイムスタンプを1時間フォーマットします
$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
)
)
また、各グループが1日ですべてのタイムスタンプを含むように、日ごとにタイムスタンプをグループ化することもできます。
// 日ごとにグループタイムスタンプ
$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を使用すると、期間(1時間ごと、毎日など)ごとにタイムスタンプの配列を簡単にグループ化できます。 Array_chunkは通常、要素の数ごとにグループ化するために使用されますが、ここでは日付()関数を使用して、タイムスタンプを必要な期間にフォーマットし、これらの期間ごとにグループ化します。