現在の位置: ホーム> 最新記事一覧> array_chunkは、分割時にブロック内の空のデータを回避します

array_chunkは、分割時にブロック内の空のデータを回避します

M66 2025-04-26

PHPプログラミングでは、 array_chunk()は、大きな配列を複数の小さな配列(ブロック)に分割するために使用される非常に実用的な機能です。この関数には2つのパラメーターがあり、1つ目は元の配列、2つ目は各ブロックのサイズです。この機能は非常に便利ですが、ヌル値を含むブロックを生成することもありますが、これはいくつかのアプリケーションシナリオには理想的ではありません。それでは、配列を分割するときに空のブロックを生成するArray_Chunk()を避ける方法は?以下に、いくつかの一般的なソリューションについて説明します。

基本的な使用法

まず、 array_chunk()関数の基本的な使用法を見てみましょう。単純な配列があり、サイズ3のチャンクに分割したいとします。

 <?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($arr, 3);
print_r($result);
?>

出力の結果は次のとおりです。

 Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

上記のコードは、元の配列をサイズ3の複数のブロックに正常に分割します。

問題:空のブロックの生成

array_chunk()は、指定されたブロックサイズに従って配列を分割します。ただし、アレイのサイズがブロックサイズで完全に分割できない場合、最後のブロックには、指定された要素の数、または空のブロックよりも少ない場合があります。空のブロックを避けたい場合は、次の方法を使用して最適化できます。

解決策:空のブロックをフィルタリングします

空のブロックを避けるために、 array_filter()関数を使用して、配列を分割した後に空のブロックをフィルタリングできます。これを実現する方法の例は次のとおりです。

 <?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8];
$chunked = array_chunk($arr, 3);

// 使用 array_filter() 空のブロックを除外します
$chunked = array_filter($chunked, function($chunk) {
    return !empty($chunk);
});

print_r($chunked);
?>

出力の結果は次のとおりです。

 Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
        )
)

array_filter()を使用すると、空のブロックが表示されないように空の要素を含むブロックを削除できます。

別の方法:配列のサイズを変更します

空のブロックをフィルタリングしたくない場合は、配列を分割するときに使用されるブロックサイズを調整することを検討してください。たとえば、アレイを分割する前に配列の長さに基づいて適切なブロックサイズを動的に計算して、最後のブロックが空でないことを確認できます。例えば:

 <?php
$arr = [1, 2, 3, 4, 5, 6, 7];
$chunkSize = 3;
$remaining = count($arr) % $chunkSize;

if ($remaining > 0) {
    $chunkSize = $remaining;
}

$chunked = array_chunk($arr, $chunkSize);
print_r($chunked);
?>

このようにして、コードは、空のブロックを避けるために、配列の長さに応じて最後のブロックのサイズを調整します。

要約します

この記事の例を通して、 Array_Chunk()関数が配列を分割するときに空のブロックを生成する可能性があるという問題を理解し、2つのソリューションを調査することができます。Array_Filter ()で空のブロックをフィルタリングするか、空のブロックの生成を回避するためにブロックサイズを動的に調整します。さまざまなニーズに応じて、適切なソリューションを選択して、アレイの効果が予想どおりであることを確認できます。