PHP開発では、アレイのキーネームケースの問題と、複数のアレイから交差点キーを抽出する動作をしばしば扱います。 array_change_key_case()とarray_intersect_key()は、2つの非常に実用的な配列関数です。それらを一緒に使用すると、より柔軟なデータフィルタリングと比較を実現できます。
この記事では、array_interect_key()を使用してarray_change_key_case()を効果的に使用し、実際の例を使用して使用方法を説明する方法について説明します。
array_change_key_case()は、配列のすべてのキー名を大文字または小文字に変換するために使用されます。
文法:
array_change_key_case(array $array, int $case = CASE_LOWER): array
パラメーター$ caseはオプションであり、デフォルトはcase_lower (小文字)であるか、 case_upper (上品)に設定できます。
array_intersect_key()は、最初の配列にキー名が存在する2つ(またはそれ以上)の配列のキー名と戻り値を比較するために使用されます。
文法:
array_intersect_key(array $array1, array ...$arrays): array
2つの配列があるとします。1つはユーザーが送信したフォームデータで、もう1つは処理できるフィールドのリストです。フォームデータから関心のあるフィールドを抽出し、ケースの違いを無視したいと考えています。
<?php
// ユーザーがサビされたデータ,可能なキー名は、場合には一貫性がありません
$formData = [
'Name' => 'Alice',
'EMAIL' => 'alice@m66.net',
'Age' => 30,
'Location' => 'Beijing'
];
// 許可されたフィールド(小文字で統一されています)
$allowedFields = [
'name' => true,
'email' => true
];
// ユーザーデータのキー名を小文字に変換します
$normalizedFormData = array_change_key_case($formData, CASE_LOWER);
// 交差点キーのフィールドを取得します
$filteredData = array_intersect_key($normalizedFormData, $allowedFields);
// 出力結果
print_r($filteredData);
?>
Array
(
[name] => Alice
[email] => alice@vv99.net
)
この組み合わせは、APIリクエスト、フォーム検証、またはユーザー入力クリーニングを処理する場合に役立ちます。たとえば、RESTFULインターフェイスを構築するとき、フィールド名をケースに依存しないようにし、明示的に許可するフィールドのみを受け入れることを望んでいます。
最初にarray_change_key_case()を使用してキー名のケースを統合し、次にarray_intersect_key()を使用して必要なフィールドを除外することにより、Arrayデータのより正確で誤りのある処理を実行できます。この組み合わせはロジックが単純で、実用性が強く、PHP開発において非常に推奨されるモデルです。
フィールドマッチングやデータクリーニングに対処するのに問題がある場合は、この組み合わせを試してください。これにより、コードがより簡潔で堅牢になる可能性があります。