現在の位置: ホーム> 最新記事一覧> APIパラメーター検証でarray_diff_ukey()を使用します

APIパラメーター検証でarray_diff_ukey()を使用します

M66 2025-06-06

APIを開発するときは、通常、クライアントが送信した要求パラメーターが期待される構造と形式を満たすことを確認するために、パラメーター検証を実行する必要があります。 PHPは、これらのタスクを実装するのに役立つ多くの組み込み関数を提供します。ここでは、 array_diff_ukey()関数がパラメーター検証において非常に効率的な役割を果たすことができます。

array_diff_ukey()は、2つの配列を比較する関数ですが、 array_diff()の違いは、 array_diff_ukey()が配列のキーによって比較されることです。 2つの配列を受信し、等しくないすべてのキーを持つすべてのキーを持つ一連の要素を返します。これは、特に一部のAPIリクエストに不要なパラメーターが含まれているかどうかを確認するときに、パラメーターをチェックするときに特に役立ちます。

array_diff_ukey()の基本的な使用

array_diff_ukey()関数の基本的な構文は次のとおりです。

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
  • $ array1および$ array2 :比較する2つの配列。

  • $ key_compare_func :2つの配列のキーを比較するコールバック関数。

APIパラメーター検証のアプリケーション

APIパラメーターの検証では、通常、クライアントから送信された要求に予想されるパラメーターが含まれているかどうかを確認し、不要なパラメーターまたは不必要なパラメーターを除外する必要があります。このタスクを達成するには、array_diff_ukey()を使用できます。

APIリクエストのパラメーターの配列があり、クライアントが追加のパラメーターを使用してリクエストを送信し、これらの無関係なパラメーターを削除し、気にするパラメーターのみを保持する必要があるとします。

例1:基本的なパラメーター検証

クライアントのリクエストに次のパラメーターを含めることが期待されているとします。

 $requiredParams = ['name', 'age', 'email'];

クライアントが送信した要求パラメーター配列は次のとおりです。

 $requestParams = [
    'name' => 'John',
    'age' => 30,
    'email' => 'john@example.com',
    'extra_param' => 'value',
];

$ requestParamsからextra_paramを削除したいと考えています。Array_diff_ukey ()を使用して確認できます。

 // コールバック関数を定義します,キーが入っているかどうかを比較します $requiredParams 真ん中
$keyCompareFunc = function ($key1, $key2) use ($requiredParams) {
    return in_array($key1, $requiredParams) ? 0 : 1; // 必要なパラメーターのみが保持されます
};

// 使用 array_diff_ukey() フィルタリングを実行します
$filteredParams = array_diff_ukey($requestParams, array_flip($requiredParams), $keyCompareFunc);

print_r($filteredParams);

出力の結果は次のとおりです。

 Array
(
    [name] => John
    [age] => 30
    [email] => john@example.com
)

上記のように、 Extra_Paramは要求パラメーター配列から正常に削除されます。

例2:より複雑な検証

追加のパラメーターを除外するだけでなく、特定のパラメーターの値が予想されるタイプを満たしているかどうかを確認するなど、より複雑な検証を除外する必要がある場合があります。 Array_diff_ukey()とその他の検証ロジックを組み合わせることで、これを達成できます。

パラメーターの年齢が整数であり、電子メールが有効な電子メールアドレスであると予想されるとします。パラメーターをフィルタリングした後、これらのタイプの検証を継続できます。

 // コールバック関数を定義します,タイプ検証を実行します
$keyCompareFunc = function ($key1, $key2) use ($requiredParams) {
    return in_array($key1, $requiredParams) ? 0 : 1; // 必要なパラメーターのみが保持されます
};

// 不要なパラメーターを除外します
$filteredParams = array_diff_ukey($requestParams, array_flip($requiredParams), $keyCompareFunc);

// タイプ検証
if (isset($filteredParams['age']) && !is_int($filteredParams['age'])) {
    echo 'Age must be an integer';
}

if (isset($filteredParams['email']) && !filter_var($filteredParams['email'], FILTER_VALIDATE_EMAIL)) {
    echo 'Invalid email format';
}

print_r($filteredParams);

この例では、最初に不必要なパラメーターをフィルタリングし、次に年齢電子メールを確認します。

結論

Array_diff_ukey()関数を合理的に利用することにより、APIリクエストでパラメーターを効率的にチェックサムフィルターすることができます。不要なパラメーターを排除するのに役立つだけでなく、複雑な検証ロジックにおいて重要な役割を果たします。リクエストパラメーターの厳密な制御を必要とするAPIの場合、 array_diff_ukey()は非常に実用的なツールです。