現在の位置: ホーム> 最新記事一覧> array_columnとarray_mapで複数の列値を効率的に抽出する方法

array_columnとarray_mapで複数の列値を効率的に抽出する方法

M66 2025-04-28

PHPでは、配列データの処理と抽出は非常に一般的なタスクです。 Array操作関数Array_ColumnArray_Mapは、特に2次元配列を扱う場合、アレイで複数の列を抽出および操作する効率的な方法を提供します。この記事では、これら2つの機能を使用して、配列で複数のデータの列を効率的に抽出し、関連するコードの例を表示する方法を紹介します。

1. array_columnを使用して、単一の列データを抽出します

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を介して、名前列のデータを抽出します。

2。array_mapを使用して、データの複数の列を抽出します

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次元配列を生成します。

3。array_columnarray_mapを使用して、データの複数の列を抽出します

複数の列からデータを抽出し、これらのデータを処理する場合があります。この目標は、 array_columnarray_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つの機能を合理的に使用することにより、配列データ処理の複雑さを大幅に簡素化し、コードの実行効率を向上させることができます。