현재 위치: > 최신 기사 목록> Array_flip () + array_diff_key ()는 차동 조작을 구현합니다

Array_flip () + array_diff_key ()는 차동 조작을 구현합니다

M66 2025-05-18

PHP에는 배열 차이 세트를 처리하는 방법에는 여러 가지가 있습니다. 공통 Array_diff () 함수 외에도 Array_flip ()array_diff_key () 함수를 사용하여 "키"를 통해 유연한 차이 세트 계산을 달성 할 수 있습니다. 이 방법은 두 배열 사이의 "키 값 일치 차이"를 다룰 때 특히 효율적이고 실용적입니다.

1. 기본 개념의 검토

1. Array_flip ()

Array_flip ()는 배열의 키와 값을 교환합니다 . 이는 원래 값이 키가되고 키가 값이 될 것임을 의미합니다.

 $input = ['apple' => 'red', 'banana' => 'yellow'];
$result = array_flip($input);

// 산출:['red' => 'apple', 'yellow' => 'banana']

참고 : 원래 배열에 중복 값이있는 경우 Array_flip ()는 복제물을 폐기하고 마지막 값 만 보유합니다.

2. Array_diff_key ()

Array_Diff_Key ()는 두 개 이상의 배열의 키를 비교하고 첫 번째 배열에 존재하지만 다른 배열에는 나타나지 않는 키 값 쌍을 반환하는 데 사용됩니다.

 $array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 99];

$result = array_diff_key($array1, $array2);

// 산출:['a' => 1, 'c' => 3]

2. array_flip + array_diff_key를 사용하여 "값 차이 세트"를 구현하십시오.

두 개의 배열이 있고 첫 번째 배열에서 고유 한 값 (즉, 차이 세트)을 찾고 싶다고 가정하면 Array_flip ()Array_diff_key () 의 조합을 영리하게 사용하여 달성 할 수 있습니다.

샘플 코드 :

 $groupA = ['apple', 'banana', 'cherry'];
$groupB = ['banana', 'grape'];

// 값을 키로 변환하십시오
$flippedA = array_flip($groupA);
$flippedB = array_flip($groupB);

// 차동 조작(통과하다 key 차이점)
$diff = array_diff_key($flippedA, $flippedB);

// 일반 값 배열로 복원됩니다
$uniqueToA = array_keys($diff);

print_r($uniqueToA);

출력 결과 :

 Array
(
    [0] => apple
    [1] => cherry
)

우리는 $ GroupA 에 있지만 $ groupB 에서는 가치를 성공적으로 발견했습니다.

3. 응용 프로그램 시나리오의 예

이 방법은 다음 시나리오에 매우 적합합니다.

  • 두 라벨 배열의 차이점을 신속하게 찾으십시오.

  • 사용자 권한 필터링 (사용자가 권한이 있지만 모듈이 사용되지 않은 기능을 찾아냅니다);

  • 다중 옵션 비교 차이 등을 형성합니다.

예를 들어, 사용자 권한 시스템을 개발하고 있으며 현재 사용자의 권한은 다음과 같습니다.

 $userPermissions = ['edit', 'delete', 'create'];

특정 모듈에서 지원하는 작업은 다음과 같습니다.

 $moduleSupports = ['edit', 'create'];

사용자가 보유한 권한을 찾을 수 있지만 모듈은 동일한 방식으로 지원하지 않습니다.

 $diff = array_keys(array_diff_key(
    array_flip($userPermissions),
    array_flip($moduleSupports)
));

// 산출 ['delete']

4. 요약

PHP는 평가에 직접 사용되는 차이 세트를 제공하지만, 좀 더 세련된 시나리오 (예 : 값이 고유 한시기)에서는 Array_flip ( )Array_diff_key () 의 조합이 효율적일뿐만 아니라보다 유연한 작동 방법을 제공합니다.

이러한 종류의 트릭은 특히 대형 어레이를 처리하거나 연산자를 비교할 때 특히 더 높은 성능을 가져올 수 있습니다.