PHPでは、配列データの処理と抽出は非常に一般的なタスクです。 Array操作関数Array_ColumnとArray_Mapは、特に2次元配列を扱う場合、アレイで複数の列を抽出および操作する効率的な方法を提供します。この記事では、これら2つの機能を使用して、配列で複数のデータの列を効率的に抽出し、関連するコードの例を表示する方法を紹介します。
array_columnは、2次元配列から指定された列からデータを抽出するために使用される関数です。配列内の各要素から指定されたキーに対応する値(通常は連想配列)を抽出し、新しい配列を返します。
文法:
array_column(array $array, $column_key, $index_key = null)
$ array :入力多次元配列。
$ column_key :抽出する列を指定します。
$ index_key :オプションパラメーター新しい配列のインデックスとしてキー値を指定するためのパラメーター。
例:
ユーザー情報の配列があるとします。各ユーザーにID 、名前、および電子メールが含まれています。
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net']
];
// すべてを抽出します "name" リスト
$names = array_column($users, 'name');
print_r($names);
出力:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
array_columnを介して、名前列のデータを抽出します。
array_mapを使用して、配列内の各要素にコールバック関数を適用して、新しい配列を生成できます。この機能を使用して、複数の列からデータを抽出できます。
文法:
array_map(callable $callback, array $array)
$ callback :配列内の各要素を処理するコールバック関数。
$配列:入力配列。
例:
名前列だけでなく、電子メール列も抽出したいとしたら、コールバック関数と組み合わせてarray_mapを使用してこれを行うことができます。
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net']
];
// 抽出する "name" そして "email" 两リスト
$namesAndEmails = array_map(function($user) {
return [$user['name'], $user['email']];
}, $users);
print_r($namesAndEmails);
出力:
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_mapを使用して、各ユーザーの配列から2つのフィールド名と電子メールを抽出し、新しい2次元配列を生成します。
複数の列からデータを抽出し、これらのデータを処理する場合があります。この目標は、 array_columnとarray_mapを組み合わせることで効率的に達成できます。たとえば、すべてのユーザーの名前と電子メール列を抽出し、メールのM66.NETドメイン名をExample.comに置き換えることができます。
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net']
];
// 使用 array_map 抽出する name そして email,および変更します email
$namesAndEmails = array_map(function($user) {
$user['email'] = str_replace('@m66.net', '@example.com', $user['email']);
return [$user['name'], $user['email']];
}, $users);
print_r($namesAndEmails);
出力:
Array
(
[0] => Array
(
[0] => Alice
[1] => alice@example.com
)
[1] => Array
(
[0] => Bob
[1] => bob@example.com
)
[2] => Array
(
[0] => Charlie
[1] => charlie@example.com
)
)
この例では、ユーザーの名前と電子メールを抽出するだけでなく、 str_replaceを介してm66.netからExample.comにメールドメイン名を変更します。
array_columnは、多次元アレイから単一の列データを抽出するための非常に効率的なツールであり、単純な列抽出に適しています。
array_mapは、各要素の複雑な処理を実行するために使用できるより強力な機能を提供し、複数の列からデータを抽出します。
これらの2つの機能を使用すると、多次元アレイでマルチコラムデータを効果的に抽出および処理し、ネストされたForeachループの使用を避け、コードの読みやすさと実行効率を向上させることができます。
これら2つの機能を合理的に使用することにより、配列データ処理の複雑さを大幅に簡素化し、コードの実行効率を向上させることができます。