현재 위치: > 최신 기사 목록> 콜백 함수의 잘못된 순서가 왜 array_diff_ukey가 잘못된 결과를 초래합니까?

콜백 함수의 잘못된 순서가 왜 array_diff_ukey가 잘못된 결과를 초래합니까?

M66 2025-06-13

php에서 array_diff_ukey ()는 두 개 이상의 배열의 키를 비교하고 다른 배열에 존재하지 않는 키의 일부를 반환하는 함수입니다. 이 기능을 사용하면 사용자 정의 콜백 기능이 사용자 정의 비교 작업을 수행 할 수 있습니다. 그러나 콜백 함수의 매개 변수 순서가 올바르지 않으면 비교 결과가 기대치와 일치하지 않을 수 있습니다.

array_diff_ukey () 의 기본 사용

Array_diff_ukey () 함수는 배열의 키를 비교하는 데 사용되며 다른 배열에서는 찾을 수없는 것들을 반환합니다. 기본 구문은 다음과 같습니다.

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

  • $ array2 : 두 번째 배열.

  • $ key_compare_func : 두 개의 키를 비교하는 사용자 정의 콜백 함수.

예를 들어, 두 개의 배열이 있다고 가정합니다.

 $array1 = [
    'apple' => 10,
    'banana' => 20,
    'cherry' => 30,
];

$array2 = [
    'apple' => 10,
    'cherry' => 30,
    'date' => 40,
];

Array_diff_ukey ()를 사용하여 키를 비교할 수 있습니다.

 $result = array_diff_ukey($array1, $array2, 'my_comparator');

콜백 함수의 역할

사용자 정의 콜백 함수 my_comparator는 두 개의 키를 비교하여 동일한 지 여부를 결정해야합니다. 일반적으로 다음과 같은 콜백 기능을 작성합니다.

 function my_comparator($key1, $key2) {
    return strcmp($key1, $key2); // 두 개의 키를 비교하십시오
}

이 함수는 다음을 반환합니다.

  • 0 : 두 키가 동일하다면.

  • $ key1이 $ key2 보다 작은 경우 0 보다 작습니다.

  • $ key1이 $ key2 보다 큰 경우 0 보다 큽니다.

잘못된 매개 변수 순서가 발생하면 어떤 문제가 발생합니까?

Array_diff_ukey () 에서 콜백 함수의 매개 변수 순서가 매우 중요합니다. 콜백 함수의 서명은 기능 ($ key1, $ key2) 이어야하며, 여기서 $ key1 은 첫 번째 배열의 키이고 $ key2는 두 번째 배열의 키입니다. 예를 들어, 쓰기 함수 ($ key2, $ key1) 와 같은 매개 변수 순서를 뒤집으면 비교 중 비교 순서가 일치하지 않아 결과가 잘못되었습니다.

예를 들어:

우리가 콜백 함수의 순서를 잘못 만들어 다음으로 변경했다고 가정합니다.

 function my_comparator($key2, $key1) {
    return strcmp($key2, $key1);
}

이것의 결과는 비교 순서가 역전된다는 것입니다. array_diff_ukey () 함수 가이 잘못된 콜백 함수를 내부적으로 호출하면 배열 키를 잘못 비교합니다. 결과적으로 일부 키는 동일하거나 다르기 때문에 부정확 한 결과를 반환해야한다고 잘못 가정 할 수 있습니다.

예를 들어, array_diff_ukey () 함수의 목적이 $ array1 에 있지만 $ array2 에 있지 않은 키를 찾는 경우, 잘못된 콜백으로 인해 잘못되게 유지 해야하는 키가 잘못 유지되거나 잘못 유지되어서는 안되는 키가 발생할 수 있습니다.

매개 변수 순서를 수정하는 방법은 무엇입니까?

이를 피하려면 콜백 함수에 올바른 순서의 매개 변수가 있는지 확인해야합니다. 올바른 콜백 함수는 다음과 같이 작성해야합니다.

 function my_comparator($key1, $key2) {
    return strcmp($key1, $key2); // 두 개의 키를 비교하십시오
}

$ key1이 첫 번째 배열에서 나오고 $ key2가 두 번째 배열에서 나와 올바른 비교 로직을 보장하십시오.

요약

array_diff_ukey () 함수를 사용하는 경우 콜백 함수의 매개 변수 순서가 중요합니다. 비교 로직이 반전되어 함수의 동작에 영향을 미치기 때문에 잘못된 매개 변수 순서가 잘못된 결과로 이어질 수 있습니다. 따라서 콜백 함수를 작성할 때 매개 변수 순서를주의 깊게 확인하여 기능의 의도 된 사용을 충족하는지 확인하십시오.