APIを開発するときは、通常、クライアントが送信した要求パラメーターが期待される構造と形式を満たすことを確認するために、パラメーター検証を実行する必要があります。 PHPは、これらのタスクを実装するのに役立つ多くの組み込み関数を提供します。ここでは、 array_diff_ukey()関数がパラメーター検証において非常に効率的な役割を果たすことができます。
array_diff_ukey()は、2つの配列を比較する関数ですが、 array_diff()の違いは、 array_diff_ukey()が配列のキーによって比較されることです。 2つの配列を受信し、等しくないすべてのキーを持つすべてのキーを持つ一連の要素を返します。これは、特に一部のAPIリクエストに不要なパラメーターが含まれているかどうかを確認するときに、パラメーターをチェックするときに特に役立ちます。
array_diff_ukey()関数の基本的な構文は次のとおりです。
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$ array1および$ array2 :比較する2つの配列。
$ key_compare_func :2つの配列のキーを比較するコールバック関数。
APIパラメーターの検証では、通常、クライアントから送信された要求に予想されるパラメーターが含まれているかどうかを確認し、不要なパラメーターまたは不必要なパラメーターを除外する必要があります。このタスクを達成するには、array_diff_ukey()を使用できます。
APIリクエストのパラメーターの配列があり、クライアントが追加のパラメーターを使用してリクエストを送信し、これらの無関係なパラメーターを削除し、気にするパラメーターのみを保持する必要があるとします。
クライアントのリクエストに次のパラメーターを含めることが期待されているとします。
$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は要求パラメーター配列から正常に削除されます。
追加のパラメーターを除外するだけでなく、特定のパラメーターの値が予想されるタイプを満たしているかどうかを確認するなど、より複雑な検証を除外する必要がある場合があります。 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()は非常に実用的なツールです。