現在の位置: ホーム> 最新記事一覧> PHPのarray_diff_ukey()関数を使用してブラックリストフィルタリングメカニズムを実装する方法は?

PHPのarray_diff_ukey()関数を使用してブラックリストフィルタリングメカニズムを実装する方法は?

M66 2025-05-14

ブラックリストフィルタリングは、開発中の一般的な要件です。ユーザーアクセスデータがあると仮定します。ブラックリストに登録されたユーザーを除外するか、特定の条件に基づいて不適切なアクセスを除外します。この時点で、 array_diff_ukey()関数は役立ちます。アレイのキー名に基づいて比較できるため、ブラックリストフィルタリングメカニズムを実装するのに役立ちます。

array_diff_ukey()関数は、キー名に基づいて2つの配列を比較し、2つの配列の異なる部分を返すPHPの組み込み関数です。その基本的な構文は次のとおりです。

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array

パラメーター説明:

  • $ array1 :最初の配列。

  • $ array2 :2番目の配列。

  • $ key_compare_func :2つの配列のキー名を比較し、2つのキー名が等しいかどうかを示すブール値を返すコールバック関数。

実際のブラックリストフィルタリングアプリケーションでは、この関数を使用してブラックリストのユーザーを除外できます。次に、例を使用して、 array_diff_ukey()を使用してブラックリストフィルタリングメカニズムを実装する方法を詳細に示します。

サンプルコード:

2つの配列があるとします。1つはユーザーアクセスレコードアレイで、もう1つはブラックリストアレイであり、ブラックリストのユーザーをフィルタリングしたいと考えています。

 <?php
// ユーザーアクセスレコード配列,ユーザーのキーID,値はユーザーのアクセスレコードです
$accessLogs = [
    1 => "アクセス履歴1",
    2 => "アクセス履歴2",
    3 => "アクセス履歴3",
    4 => "アクセス履歴4",
    5 => "アクセス履歴5"
];

// ブラックリストアレイ,キーはブラックリストに登録されたユーザーですID
$blacklist = [
    2 => "ブラックリストに登録されたユーザー",
    4 => "ブラックリストに登録されたユーザー"
];

// カスタムキー比較関数,2つのキー名が等しいかどうかを判断します
function compare_keys($key1, $key2) {
    return $key1 - $key2;
}

// 利用 array_diff_ukey 関数は、ブラックリストにユーザーをフィルターします
$filteredLogs = array_diff_ukey($accessLogs, $blacklist, 'compare_keys');

// 输出过滤后的アクセス履歴
print_r($filteredLogs);
?>

コード解析:

  1. 最初に2つの配列を定義します。 $ AccessLogsはユーザーアクセスレコードを含む配列であり、 $ BlackListはブラックリストアレイです。両方の配列のキーはユーザーIDです。

  2. 次に、 Compare_Keysという関数を定義して、2つのキー名が等しいかどうかを比較します。この関数は、 array_diff_ukey()関数のコールバックパラメーターに使用され、ブール値を返して、2つのキーが等しいかどうかを判断します。

  3. 次に、 array_diff_ukey()関数を使用して、ブラックリスト配列のユーザーをフィルタリングし、ブラックリストにないユーザーを含む新しいフィルタリングアレイ$ filteredlogsを返します。

  4. 最後に、フィルタリングされた結果はprint_r()を介して出力されます。

実行結果:

 Array
(
    [1] => アクセス履歴1
    [3] => アクセス履歴3
    [5] => アクセス履歴5
)

上記のように、ブラックリストのユーザー(ID 2および4)は正常にフィルタリングされており、残りのアクセスレコードには非ブラックリストユーザーのみが含まれています。

アプリケーションシナリオ:

この方法は、次のような複数のシナリオで使用できます。

  • Webサイトユーザーアクセスログフィルタリングブラックリストに登録されたユーザーによるアクセスを避けます。

  • 特定の不正なIPアドレスをフィルタリングして、システムが正当な要求のみを受信することを確認します。

  • ユーザー管理システムでは、一部の無効なユーザーが利用可能なユーザーのリストから削除されます。

要約:

PHPのarray_diff_ukey()関数を介して、ブラックリストフィルタリングメカニズムを効率的に実装できます。カスタマイズされたキー比較関数と組み合わせて、配列のキー名を柔軟に比較して、ユーザーまたはデータの正確なフィルタリングを実現できます。実際の開発で同様の操作が必要な場合、 array_diff_ukey()関数は間違いなく非常に実用的なツールです。