현재 위치: > 최신 기사 목록> 콜백 비교 키로 strnatcmp와 같은 PHP 내장 기능 사용

콜백 비교 키로 strnatcmp와 같은 PHP 내장 기능 사용

M66 2025-05-17

PHP에서 array_diff_ukey 함수는 두 배열의 키를 비교하고 첫 번째 배열의 두 번째 배열에 존재하지 않는 키에 해당하는 키 값 쌍을 반환하는 데 사용될 수 있습니다. array_diff_ukey는 키를 비교하는 방법을 결정하는 콜백 함수를 수락합니다. 기본적으로 Array_diff_ukey는 엄격한 평등 비교 (예 : === )를 사용하지만 경우에 따라 사용자 지정 콜백 기능을 제공하여보다 유연하거나 구체적인 주요 비교 방식이어야 할 수도 있습니다.

이 기사에서는 Strnatcmp 와 같은 PHP 내장 기능을 주요 비교를 수행하기위한 콜백 함수로 사용하여 특히 많은 수의 배열을 처리 할 때 Array_Diff_ukey 의 성능을 향상시키는 방법에 대해 설명합니다.

1. PHP에서 Array_Diff_ukey 함수 소개

Array_diff_ukey 의 기능 프로토 타입은 다음과 같습니다.

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 : 첫 번째 배열

  • $ array2 : 두 번째 배열

  • $ key_compare_func : 배열 키를 비교하는 데 사용되는 콜백 함수

이 함수는 두 번째 배열에 키가 존재하지 않는 첫 번째 배열에 요소가 포함 된 새 배열을 반환합니다.

2. 콜백 함수를 비교하기 위해 strnatcmp를 키로 사용하십시오

strnatcmp 는 두 줄을 자연 순서대로 비교하기위한 PHP의 내장 기능입니다. 기존의 문자열 비교와 달리 strnatcmp는 문자열의 "자연 분류"를 허용합니다. 즉, 인간 분류와 유사하게 숫자 부분은 숫자 크기로 비교되고 문자열 부분은 알파벳순으로 비교됩니다.

샘플 코드는 다음과 같습니다.

 $array1 = [
    "10" => "a",
    "2"  => "b",
    "100" => "c"
];

$array2 = [
    "1" => "x",
    "10" => "y"
];

// 사용 strnatcmp 콜백 함수로서 키를 비교합니다
$result = array_diff_ukey($array1, $array2, 'strnatcmp');

print_r($result);

이 예에서 Array_Diff_ukey는 Strnatcmp를 사용하여 $ array1$ array2 의 키를 비교합니다. $ array1 의 키가 $ array2 에 표시되지 않고 자연 순서 규칙에 따라 불평등 한 것으로 결정되면 $ array1 의 키 값 쌍이 유지됩니다.

3. 왜 strnatcmp를 사용하여 키를 비교합니까?

기본적으로 Array_diff_ukey는 엄격한 평등 비교 방법 ===를 사용합니다. 이는 열쇠와 값이 동일한 경우 만 동일하게 간주 될 것임을 의미합니다. strnatcmp를 사용하면 키를 비교할 때 특히 숫자 문자열을 다룰 때 숫자 부품을 자연 순서대로 처리 할 수 ​​있습니다.

예를 들어, 문자열 "10""2" 의 경우 일반 문자열 비교는 "10""2" 보다 작다고 생각하는 반면, 자연 순서 비교는 "2""10" 보다 작으며, 이는 우리의 일일 직관과 더 일치한다고 생각합니다.

4. 성능을 더욱 최적화합니다

많은 양의 데이터를 처리 할 때, 특히 주요 비교와 관련하여 올바른 비교 기능을 선택하면 성능이 크게 향상 될 수 있습니다. 예를 들어, strnatcmp는 특히 데이터에 많은 숫자가 포함 된 경우 strcmp 와 같은 일반 문자열 비교 함수를 사용하는 것보다 더 효율적일 수 있습니다.

또한 PHP의 내장 비교 기능은 일반적으로 우리가 구현하는 콜백 기능보다 최적화되고 빠릅니다. 따라서 성능을 최적화 할 때 콜백 기능으로 적절한 내장 기능을 선택하는 것은 간단하고 효과적인 방법입니다.

5. strnatcmp 사용의 실제 응용 시나리오

숫자 문자열 형태의 키를 포함하는 두 개의 배열이 있다고 가정합니다. Array_Diff_ukey를 통해 $ array2 에 존재하지 않는 $ array1 의 키-값 쌍을 찾으려고하며, 키를 비교할 때 숫자 부품을 자연 순서로 처리하려고합니다. strnatcmp를 사용하는 것이 매우 적합합니다.

 $array1 = [
    "100" => "a",
    "2"   => "b",
    "20"  => "c",
];

$array2 = [
    "10" => "x",
    "100" => "y",
];

$result = array_diff_ukey($array1, $array2, 'strnatcmp');
print_r($result);

출력 결과는 다음과 같습니다.

 Array
(
    [2] => b
    [20] => c
)

6. 결론

array_diff_ukey 의 콜백 함수로 PHP 내장 함수 strnatcmp 등을 전달함으로써보다 유연한 주요 비교 방법을 구현하고 경우에 따라 성능을 향상시킬 수 있습니다. 자연 분류의 비교 방법은 자연적인 숫자 분류 규칙을 따르기 때문에 숫자 부품을 포함하는 키를 처리하는 데 특히 적합하여 일반 문자열 비교의 오류를 피합니다.

대형 데이터 세트를 작업 할 때 주요 비교를위한 적절한 내장 기능을 선택하는 것은 성능을 향상시키는 쉽고 효과적인 방법입니다. array_diff_ukey는 strnatcmp 와 결합하여 키를보다 정확하고 효율적으로 비교할 수 있습니다.