현재 위치: > 최신 기사 목록> Array_flip () 및 Array_intersect_key ()를 사용하여 배열 필터링을 수행하십시오

Array_flip () 및 Array_intersect_key ()를 사용하여 배열 필터링을 수행하십시오

M66 2025-05-14

매일 PHP 개발에서는 종종 특정 "화이트리스트 키"또는 "블랙리스트 키"를 기반으로 배열을 필터링해야합니다. PHP가 제공하는 Array_flip ()Array_intersect_key () 함수는이 요구 사항을 매우 효율적으로 달성 할 수 있습니다. 이 기사는 특정 코드 예제를 사용 하여이 두 기능을 사용하여 배열 필터링 작업을 완료하는 방법을 소개합니다.

1. 기능 소개

1. Array_flip ()

이 기능은 키와 값을 배열에서 바꾸는 데 사용됩니다.

 array_flip(array $array): array
  • 입력 : 배열.

  • 출력 : 키 값 쌍의 배열이 뒤집힌 후 배열 (참고 : 원래 배열의 값은 고유해야하며 키의 스칼라 값으로 사용할 수 있어야합니다).

2. array_intersect_key ()

이 기능은 모든 키가 다른 어레이에 존재하는 배열의 요소를 반환하는 데 사용됩니다.

 array_intersect_key(array $array, array ...$arrays): array
  • 입력 : 둘 이상의 배열.

  • 출력 : 첫 번째 배열의 모든 후속 배열에 동시에 나타나는 요소 만.

2. 사용 시나리오의 예

허용 키만 유지하는 사용자 입력 필드 필터

사용자 양식에서 다음 데이터를 수신한다고 가정합니다.

 $userInput = [
    'username' => 'john_doe',
    'password' => '123456',
    'email' => 'john@example.com',
    'token' => 'abcd1234',  // 불법 분야
];

우리는 세 개의 필드 '사용자 이름' , '비밀번호''이메일' 만 유지하고 다른 하나는 필터링해야합니다.

array_flip () + array_intersect_key ()를 사용하여 필터링을 구현하십시오.

 $allowedKeys = ['username', 'password', 'email'];

// 키 이름으로 키를 변경할 수 있습니다
$allowedKeysFlipped = array_flip($allowedKeys);

// 교차로를 얻으십시오,동일한 키로 필드를 유지하십시오
$filteredInput = array_intersect_key($userInput, $allowedKeysFlipped);

print_r($filteredInput);

출력 결과 :

 Array
(
    [username] => john_doe
    [password] => 123456
    [email] => john@example.com
)

이런 식으로, 우리는 어레이를 유연하고 안전하게 필터링하여 불법 필드가 계속 처리되거나 데이터베이스에 기록되는 것을 피할 수 있습니다.

3. 사용 확장 : 필터 API 매개 변수

API 인터페이스를 개발하고 다음 URL 매개 변수를 수신한다고 가정합니다.

 https://m66.net/api/user/update?username=jane&password=78910&is_admin=1

클라이언트가 마음대로 IS_ADMIN 과 같은 민감한 필드를 수정하고 사용자 이름비밀번호 만 업데이트하기를 원하지 않습니다.

당신은 이것을 할 수 있습니다 :

 $input = $_GET;

$allowed = ['username', 'password'];

$safeInput = array_intersect_key($input, array_flip($allowed));

// 지금 $safeInput 허용 된 필드 만 포함합니다

이 방법은 API 매개 변수의 화이트리스트 메커니즘을 쉽게 구현하고 보안을 향상시킬 수 있습니다.

4. 요약

Array_flip ()Array_intersect_key ()를 결합하여 배열의 주요 필터링 작업을 매우 편리하게 구현할 수 있습니다. 이 접근법은 코드와 고성능에서 간결 할뿐만 아니라 유지 관리가 쉽습니다. 양식 처리, API 매개 변수 필터링 및 기타 시나리오에 적합합니다.

실제 개발에서는이 논리를 함수로 캡슐화하는 것이 좋습니다.

 function filter_array_keys(array $data, array $allowedKeys): array {
    return array_intersect_key($data, array_flip($allowedKeys));
}

이렇게하면 코드가 더 모듈 식적이고 읽을 수 있습니다.