現在の位置: ホーム> 最新記事一覧> array_columnおよびarray_intersect関数を使用して特定の値が配置されている場所をフィルタリングする方法は?

array_columnおよびarray_intersect関数を使用して特定の値が配置されている場所をフィルタリングする方法は?

M66 2025-04-28

PHPでは、特にアレイから特定の行を除外する場合、多次元配列に対処する必要があることがよくあります。 PHPは、これらの操作を効率的に実行するのに役立つ多くの実用的な機能を提供します。その中で、 Array_ColumnArray_intersectは、非常に一般的に使用される2つの機能です。

array_column関数を使用して、多次元配列内の指定された列の値を取得できますが、 array_intersect関数を使用して、別の配列と交差する配列の部分を見つけることができます。これら2つの機能を組み合わせることで、特定の値を含む行を簡単に除外できます。この記事では、簡単な例を使用して、フィルタリングにこれら2つの関数を使用する方法を示します。

サンプルシナリオ

複数のユーザー情報を含む多次元配列があると仮定します。各ユーザー情報は連想配列です。電子メールアドレスを使用してすべてのユーザー情報をフィルタリングする必要があります@m66.netarray_columnを使用してすべてのメールアドレスを取得し、 array_intersectを使用して特定のメールアドレスを含む行を見つけます。

サンプルコード

<?php
// ユーザーデータ
$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'],
    ['id' => 4, 'name' => 'David', 'email' => 'example@m66.net'],
    ['id' => 5, 'name' => 'Eve', 'email' => 'eve@m66.net'],
];

// フィルタリングする必要がある特定のメールアドレス
$targetEmail = 'example@m66.net';

// 使用 array_column すべてのメールアドレスを取得します
$emails = array_column($users, 'email');

// 使用 array_intersect ターゲットメールボックスと同じ行を見つけます
$filteredUsers = array_filter($users, function ($user) use ($emails, $targetEmail) {
    return in_array($targetEmail, $emails) && $user['email'] === $targetEmail;
});

// 出力フィルターの結果
print_r($filteredUsers);
?>

コード解析

  1. array_column :この関数は、多次元配列から指定された列を抽出するために使用されます。ここでは、array_column($ users、 'email')を使用して、すべてのユーザーのメールアドレスを抽出し、 $ eメール配列に保存します。

  2. array_intersect :この関数は、配列間の交差点を返すことができます。この例では、 Array_intersectを直接使用してArrayの交点を比較するのではなく、 in_arrayを使用してターゲット配列にメールアドレスが存在するかどうかを確認します。一致するメールアドレスが見つかった場合、対応する行を返します。

  3. array_filter :配列をフィルタリングし、基準を満たす要素をフィルタリングするために使用されます。この例では、カスタムコールバック関数を使用して、電子メールアドレス「example@m66.net」で行を除外します。

出力結果

上記のコードを実行する場合、 $ filteredusersアレイには、メールボックスのexample@m66.net 'のユーザーデータのみが含まれ、出力結果は次のとおりです。