PHP에는 배열 교차점을 다루는 많은 함수가 있으며, 그중에는 array_intersect_assoc 및 array_intersect_uassoc가 종종 혼란 스럽지만 매우 유사한 기능을 갖는 두 가지 함수입니다. 모두 여러 배열의 교차점을 계산하는 데 사용되지만 배열 키 (키)를 비교할 때 다르게 행동합니다. 이 기사는이 두 기능의 차이점을 자세히 설명하고 실질적인 제안을 제공합니다.
Array_intersect_assoc (Array $ array1, Array $ array2, Array ... $ 배열) : Array
배열 교차점을 계산하고 비교할 때 값 (값)을 고려할뿐만 아니라 키를 엄격하게 비교하십시오. 주요 비교는 PHP를 사용한 기본 평등 판단입니다 (예 : == ).
Array_intersect_uassoc (Array $ array1, Array $ array2, Array ... $ Array, Callable $ key_compare_func) : Array
Array_intersect_assoc 과 유사하지만 주요 비교는 기본 평등 비교 대신 사용자 정의 콜백 함수 $ key_compare_func을 사용합니다.
| 특징 | array_intersect_assoc | array_intersect_uassoc |
|---|---|---|
| 값 비교 | 예 | 예 |
| 비교 키 | 예 | 예 |
| 키를 비교하는 방법 | 기본 키 비교 (==) | 비교를위한 사용자 정의 콜백 함수 |
| 사용자 정의 비교를 지원할 것인지 | 아니요 | 예 |
| 사용 예제 | 비교 함수에서 통과 할 필요가 없습니다 | 비교 키에서 전달 해야하는 콜백 함수 |
<?php
$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "1" => "red"];
$array2 = ["a" => "green", "1" => "red", "b" => "brown", "c" => "blue"];
// array_intersect_assoc 키와 값을 직접 비교하십시오
$result_assoc = array_intersect_assoc($array1, $array2);
// 출력 결과:["a" => "green", "b" => "brown", "c" => "blue"]
print_r($result_assoc);
// 사용자 정의 비교 기능,키를 비교할 때 케이스 감도
function key_compare_func($key1, $key2) {
return strcmp($key1, $key2);
}
$array3 = ["A" => "green", "b" => "brown", "c" => "blue"];
$result_uassoc = array_intersect_uassoc($array1, $array3, "key_compare_func");
// 출력 결과:["b" => "brown", "c" => "blue"]
print_r($result_uassoc);
?>
Array_intersect_assoc 사용 :
배열 키와 값 만 비교하면 간결하고 효율적인 선택이며 사용자 정의 규칙 (예 : 둔감, 유형 변환 등)이 필요하지 않습니다.
Array_intersect_uassoc 사용 :
키가 비교되는 방식에 특별한 요구가 필요한 경우 :
사례에 민감합니다
더 복잡한 비교 논리가 필요합니다
비교 키는 사용자 정의 객체 또는 복잡한 유형입니다
현재 콜백 함수를 전달하여 유연한 주요 비교 규칙을 구현할 수 있습니다.
Array_intersect_assoc 은 기본 키 값 비교를 기반으로 한 배열 교차점입니다.
Array_intersect_uassoc은 보다 유연한 주요 비교 메커니즘을 제공하여 사용자가 비교 로직을 사용자 정의 할 수 있습니다.
비즈니스 요구에 따라 사용자 정의 키를 비교 해야하는지 여부를 결정하면 올바른 기능을 선택하면보다 강력하고 유지 관리 가능한 코드를 작성할 수 있습니다.