現在の位置: ホーム> 最新記事一覧> array_chunkはarray_columnと協力して、列ごとに2次元配列を分割する

array_chunkはarray_columnと協力して、列ごとに2次元配列を分割する

M66 2025-04-26

PHPでは、 array_chunkarray_columnは、アレイで柔軟な操作を実行するのに役立つ2つの非常に便利な関数です。これら2つの機能を合理的に使用することにより、列ごとに2次元配列を分割する操作を簡単に実装できます。この記事では、この目標を達成するためにarray_chunkarray_columnを組み合わせる方法を詳細に紹介します。

1. array_chunkarray_columnを理解します

  • array_column :この関数は、多次元配列から列の値を抽出できます。その一般的な使用法は、手動でループすることなく、指定された列のすべての値を取得することです。

     array_column(array $array, mixed $column_key, mixed $index_key = null)
    
  • array_chunk :この関数は、アレイを複数の小さなアレイに分割します。各小さな配列は、指定された数の要素を含むものを含みます。これにより、大きな配列を効率的に分割できます。

     array_chunk(array $array, int $size, bool $preserve_keys = false)
    

2。列ごとに2D配列のターゲットを分割します

各要素に複数の列のデータが含まれる2次元配列があるとします。列を抽出し、特定のサイズに応じて列のデータを複数の小さな配列に分割する場合は、 array_columnarray_chunkの組み合わせを使用できます。

3。サンプルコード

次の2次元配列があるとします。

 $data = [
    ['id' => 1, 'name' => 'Tom', 'age' => 28],
    ['id' => 2, 'name' => 'Jerry', 'age' => 30],
    ['id' => 3, 'name' => 'Mickey', 'age' => 25],
    ['id' => 4, 'name' => 'Donald', 'age' => 35],
    ['id' => 5, 'name' => 'Goofy', 'age' => 40],
    ['id' => 6, 'name' => 'Pluto', 'age' => 22]
];

名前の列を抽出し、2つの要素ごとに分割する場合のみ、次のコードを使用できます。

 // 抽出する 'name' リスト
$names = array_column($data, 'name');

// それぞれを押します 2 分割要素
$chunkedNames = array_chunk($names, 2);

// 出力分割配リスト
print_r($chunkedNames);

出力結果:

 Array
(
    [0] => Array
        (
            [0] => Tom
            [1] => Jerry
        )

    [1] => Array
        (
            [0] => Mickey
            [1] => Donald
        )

    [2] => Array
        (
            [0] => Goofy
            [1] => Pluto
        )
)

4. array_chunkarray_columnを使用して、複雑なデータを処理します

実際のアプリケーションでは、より複雑な配列を分割する必要があることがよくあります。 URLアドレスのリストがあり、各URLのメインドメイン名部分を抽出し、3つのドメイン名ごとに分割するとします。元のデータが次のとおりであると仮定します。

 $data = [
    ['url' => 'http://www.m66.net/page1', 'other' => 'data1'],
    ['url' => 'http://www.m66.net/page2', 'other' => 'data2'],
    ['url' => 'http://www.m66.net/page3', 'other' => 'data3'],
    ['url' => 'http://www.m66.net/page4', 'other' => 'data4'],
    ['url' => 'http://www.m66.net/page5', 'other' => 'data5'],
    ['url' => 'http://www.m66.net/page6', 'other' => 'data6']
];

最初にarray_columnを使用してすべてのURLを抽出し、次にparse_url関数を使用してメインドメイン名を取得し、最後にarray_chunkを使用してドメイン名を3つのグループに分割します。

 // 抽出する 'url' リスト
$urls = array_column($data, 'url');

// それぞれを取得します URL メインドメイン名パーツ
$domains = array_map(function($url) {
    return parse_url($url, PHP_URL_HOST);
}, $urls);

// それぞれを押します 3 ドメイン名の分割
$chunkedDomains = array_chunk($domains, 3);

// 出力スプリットドメイン名配列
print_r($chunkedDomains);

出力結果: