PHPでは、 Array_Column関数は、多次元配列から特定の列データを簡単に抽出できます。多くの場合、後続の処理のために連想配列または多次元配列から指定された列を抽出するために使用されます。次に、 Array_Column関数を使用して、多次元配列からマルチカラムデータを抽出する方法に飛び込みます。
array_column関数の基本的な構文は次のとおりです。
array_column(array $array, $column_key, $index_key = null): array
$ array :入力多次元配列。
$ column_key :抽出する必要がある列のキー名。
$ index_key :(オプション)は、配列を返すキーとして使用されます。提供されていない場合、返された配列はインデックス付き配列になります。
まず、多次元配列から単一の列データを抽出する方法を示す簡単な例を見てみましょう。
<?php
$data = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
];
$emails = array_column($data, 'email');
print_r($emails);
?>
出力結果:
Array
(
[0] => alice@m66.net
[1] => bob@m66.net
[2] => charlie@m66.net
)
この例では、 array_columnを使用して電子メール列を抽出します。
array_columnはデータの列のみを抽出できますが、複数のデータの列を抽出する場合は、 array_columnとarray_mapの組み合わせを使用してそれを実現できます。複数の列を抽出する方法を示す例を次に示します。
<?php
$data = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
];
$namesAndEmails = array_map(function($item) {
return [
'name' => $item['name'],
'email' => $item['email'],
];
}, $data);
print_r($namesAndEmails);
?>
出力結果:
Array
(
[0] => Array
(
[name] => Alice
[email] => alice@m66.net
)
[1] => Array
(
[name] => Bob
[email] => bob@m66.net
)
[2] => Array
(
[name] => Charlie
[email] => charlie@m66.net
)
)
この例では、 array_map関数を使用して、名前と電子メールの列を新しい配列に抽出します。
array_columnを介して複数の列データを抽出する場合は、通常、他の関数を使用してarray_columnと併せて使用できます。たとえば、1つの列のみを気にし、相関操作に他のデータが必要な場合は、より複雑な例を示します。
<?php
$data = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
];
$names = array_column($data, 'name');
$emails = array_column($data, 'email');
// 2つの配列をマージします
$merged = array_map(null, $names, $emails);
print_r($merged);
?>
出力結果:
Array
(
[0] => Array
(
[0] => Alice
[1] => alice@m66.net
)
[1] => Array
(
[0] => Bob
[1] => bob@m66.net
)
[2] => Array
(
[0] => Charlie
[1] => charlie@m66.net
)
)
この例では、 array_columnを使用して名前と電子メールの列を抽出し、 array_map関数を介して2次元配列にマージします。
array_columnは、配列内のデータの列を簡単に抽出するのに役立つ非常に強力なツールです。
複数の列抽出の場合、 array_columnは単一の列のみを処理できますが、 array_mapなどの他の機能を組み合わせることにより、複数の列を抽出する要件を実現できます。
Array_Columnは、特に大規模なデータを処理する場合はより効率的です。これは、手動ループよりも効率的です。
Array_Columnおよびその他の配列機能を合理的に使用することにより、PHPの多次元配列データをより効率的に処理できます。